qq_43465083 2022-11-09 09:40 采纳率: 100%
浏览 41
已结题

Raw灰度数据转bmp图片偏绿色

我在处理raw转bmp时用了下面的函数,显示出来的bmp图像背景是绿色的,输入的是8位Raw灰度数据, 不知道为甚么,可以解答一下吗?
void RawToBmp(unsigned char *Dist[Height], int pWidth, int pHeight)
{
FILE *fp_bmp;

fopen_s(&fp_bmp, "1.bmp", "w");
BITMAPFILEHEADER bh;//位图文件头  
BITMAPINFOHEADER bInfo;//位图信息头   
RGBQUAD  rgb;//彩色表        

rgb.rgbReserved = 0; //保留,设置为0    
bInfo.biSize = sizeof(BITMAPINFOHEADER);//结构体所需要的字数
bInfo.biWidth = pWidth;   //宽
bInfo.biHeight = pHeight; //高        
bInfo.biPlanes = 1;   //说明位面数,1     
bInfo.biBitCount = 8; //像素,8比特       
bInfo.biCompression = BI_RGB;  //无压缩       
bInfo.biSizeImage = pWidth * pHeight; //图像大小,单位字节       
bInfo.biXPelsPerMeter = 0;   //水平分辨率      
bInfo.biYPelsPerMeter = 0;   //垂直分辨率      
bInfo.biClrUsed = 256;   //位图实际使用的彩色表中的颜色索引数  
bInfo.biClrImportant = 0;  //表示颜色索引数目都重要      
bh.bfType = ((WORD)('M' << 8) | 'B');  //表示这是一个WORD(162字节),低位为'B',高位为'M'      
bh.bfReserved1 = 0;   //保留,必须为0     
bh.bfReserved2 = 0;  //保留,必须为0 
bh.bfOffBits = sizeof(BITMAPFILEHEADER) + sizeof(BITMAPINFOHEADER) + sizeof(RGBQUAD)*bInfo.biClrUsed; //偏移量        
bh.bfSize = bh.bfOffBits + bInfo.biSizeImage;  //文件大小  
/*******写bmp文件(文件头,信息头,彩色表,数据)******/
fwrite(&bh, sizeof(BITMAPFILEHEADER), 1, fp_bmp);//写文件头  
fwrite(&bInfo, sizeof(BITMAPINFOHEADER), 1, fp_bmp);//写信息头   
for (int i = 0; i < 256; i++)//写彩色表  
{
    rgb.rgbBlue = rgb.rgbGreen = rgb.rgbRed = i;
    fwrite(&rgb, sizeof(RGBQUAD), 1, fp_bmp);
}
for (int i = pHeight - 1; i >= 0; i--)//写图像数据  (unsigned char)Dist[i]是处理好的8位灰度Raw图像数据
{
    fwrite(Dist[i], 1, pWidth, fp_bmp);
}

/*for (int i = 0; i < pHeight * pWidth; i++)
{
    fwrite(&Dist[i], 1, 1, fp_bmp);
}*/

fclose(fp_bmp);
printf("完成格式转换!!\n");

}

  • 写回答

0条回答 默认 最新

    报告相同问题?

    问题事件

    • 系统已结题 11月17日
    • 修改了问题 11月9日
    • 创建了问题 11月9日

    悬赏问题

    • ¥15 无源定位系统的时差估计误差标准差
    • ¥15 请问这个代码哪里有问题啊
    • ¥20 python--version在命令端输入结果Python is not defined怎么办?还有pip不是exe格式是不是没安装成功?
    • ¥15 通过GaussianView进行结构微调消除虚频
    • ¥15 调用transformers库
    • ¥15 由于导出的数据名字中带有/,导致Matlab打不开,怎么办?
    • ¥15 新硬盘安装的程序总是崩溃,提示遇到错误
    • ¥15 openpcdet自制数据集评估bev精度和3d精度相同
    • ¥15 excel 上下按钮 显示行
    • ¥20 云卓h12pro 数传问题