目录
一.实验目的
- 理解图像文件的基本组成
- 掌握结构体作为复杂数据对象的用法。进一步熟悉由问题到程序的解决方案,并掌握编程细节:如内存分配、倒序读写、字节序、文件读写过程等。
二.实验要求
1.含5个不同的场景画面的bmp文件,要求带含有班级、学号后四位和本人姓名(缩写或昵称均可)的logo。(基本要求为24bit的BMP,进阶要求为支持小于24bit的BMP。
2.编写将第一步所生成的多个BMP文件转化为YUV文件要求可在命令行中设置每个画面出现的帧数。最后形成的YUV文件应至少包含 200 帧。重点掌握函数定义、缓冲区分配、倒序读写、结构体的操作。
3.对整个程序进行调试,并将生成的YUV文件用播放软件观看,验证是否正确。
三.实验步骤
- 打开文件
- 读取文件头、信息头
- 调色板判断
- 读取RGB数据
- RGB转YUV
- 输出YUV
四.实验原理及部分代码
1.头文件BMP2YUV.h
#ifndef BMP2YUV_H_
#define BMP2YUV_H_
#pragma once
#include<windows.h>
void ReadRGB(FILE* pfile, const BITMAPFILEHEADER& file_h,const BITMAPINFOHEADER& info_h, unsigned char* rgbData_Out);
void RGB2YUV(unsigned long w, unsigned long h, unsigned char* rgbData, unsigned char* y,