数据压缩实验二——bmp转yuv文件

该博客介绍了将BMP文件转换为YUV文件的实验过程,包括理解BMP文件格式,详细步骤如生成BMP文件、读取文件头信息、进行颜色空间转换,并强调了位图数据的存放顺序。最后,博主总结了实验中的关键知识点和函数复用的重要性。
摘要由CSDN通过智能技术生成

bmp文件格式转换为yuv文件格式


一、bmp格式介绍

位图图像(全称:bitmap), 亦称为点阵图像,区别于矢量图放大不失真的特征,位图图像是由单个像素点组成,放大后会失真。它是 Windows操作系统中的标准系统中的标准图像,是Windows环境中交换与图有关的数据的一种标准。BMP文件属于自包含文件,由四部分组成:
(1)位图头文件数据结构(BITMAPFILEHEADER),它包含 BMP图像文件的类型、显示内容等信息;
(2)位图信息数据结构(BITMAPINFOHEADER),它包含有BMP图像的宽、高压缩方法,以及定义颜色等信息;
(3)调色板(Palette),这个部分是可选的,有些位图需要调色板,有些位图需要调色板,比如真彩(24位的BMP)就不需要调色板;
(4)位图数据(ImageData),这部分的内容根据位图使用的位数不同而不同,在24位图中直接使用RGB,而其他的小于24位的使用调色板中颜索引值。

二、实验步骤

1.生成bmp文件

用画板工具生成五张像素为720*576的bmp文件。

2.开辟缓冲区读入bmp文件,用结构体File_header盛放文件头数据,用结构体Info_header盛放信息头数据

int main(int argc, char** argv)
{
   
    BITMAPFILEHEADER File_header;//用结构体File_header盛放文件头数据
    BITMAPINFOHEADER Info_header;//用结构体Info_header盛放信息头数据
    FILE* bmpFile;
    FILE* yuvFile;

    unsigned char* rgbBuffer, * yBuffer, * uBuffer, * vBuffer;
    char name__[20];
    //连接成字符串:potter.yuv,方便文件写入磁盘
    strcpy_s(name__, argv[1]);
    strcat_s(name__, 20, ".yuv");
    fopen_s(&yuvFile, name__, "wb");
    if (!yuvFile)
    {
   
        printf("yuvfile open error!\n");
        exit(0);
    }
    for (int i = 1; i <= atoi(argv[2]); ++i) {
   
        char str[20];
        char name_[20];
        //将“potter”“序号”“.bmp”连接成文件名,再用fopen函数打开文件
        strcpy_s
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值