【C++】Raw格式数据转换成Bmp图片

一.位图结构体

        Raw格式数据一般是记录了摄像头或者照相机传感器的原始信息,属于未加工过的原始图像文件,而Bmp格式数据一般有指定格式的文件头以及信息头,所以转换的时候需要添加位图的文件头以及信息头,定义的结构体如下:

typedef struct {WORD    bfType;//文件类型,必须是0x424D,即字符“BM”  DWORD   bfSize;//文件大小  WORD    bfReserved1;//保留字  WORD    bfReserved2;//保留字  DWORD   bfOffBits;//从文件头到实际位图数据的偏移字节数  
} BITMAPFILEHEADER;//位图文件头typedef struct {DWORD     	 biSize;//信息头大小  LONG       biWidth;//图像宽度  LONG       biHeight;//图像高度  WORD       biPlanes;//位平面数,必须为1  WORD       biBitCount;//每像素位数  DWORD      biCompression;//压缩类型  DWORD      biSizeImage;//压缩图像大小字节数  LONG       biXPelsPerMeter;//水平分辨率  LONG       biYPelsPerMeter;//垂直分辨率  DWORD      biClrUsed;//位图实际用到的色彩数  DWORD      biClrImportant;//本位图中重要的色彩数
}BITMAPINFOHEADER;//位图信息头

二.生成位图

void saveBITmap(int simple, int line, unsigned char *pData, char* filename)
{const int height = line;const int width = simple;long int size = height * width * 3;//double x,y;//生成文件头BITMAPFILEHEADER fileHeader;fileHeader.bfType = 0X4d42;fileHeader.bfReserved1 = 0;fileHeader.bfReserved2 = 0;fileHeader.bfSize = sizeof(BITMAPFILEHEADER) + sizeof(BITMAPINFOHEADER) + size;fileHeader.bfOffBits = sizeof(BITMAPFILEHEADER) + sizeof(BITMAPINFOHEADER);//生成信息头BITMAPINFOHEADER bitmapHeader = { 0 };bitmapHeader.biSize = sizeof(BITMAPINFOHEADER);bitmapHeader.biHeight = -height;bitmapHeader.biWidth = width;bitmapHeader.biPlanes = 1;bitmapHeader.biBitCount = 24;bitmapHeader.biSizeImage = size;bitmapHeader.biCompression = 0; //BI_RGB  //保存数据FILE *fp2 = fopen(filename, "wb");if (!fp2) {return;}fwrite(&fileHeader, 1, sizeof(BITMAPFILEHEADER), fp2);fwrite(&bitmapHeader, 1, sizeof(BITMAPINFOHEADER), fp2);fwrite(pData, 1, size, fp2);fclose(fp2);}

三.主函数编写

	FILE *fp = NULL;static	BYTE raw_all[samples*lines*bands * 2];static	BYTE raw_data[samples*lines*bands];//定义为全局变量,防止出现局部变量过大产生bugBYTE *ptr;if ((fp = fopen("XXX.raw", "rb")) == NULL)return 0;ptr = (BYTE*)malloc(samples*lines*bands*sizeof(BYTE) * 2);for (int i = 0; i


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部