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