位bmp彩色图转换为位灰度图的方法

位bmp彩色图转换为位灰度图的方法

ID:11748004

大小:207.00 KB

页数:21页

时间:2018-07-13

位bmp彩色图转换为位灰度图的方法_第1页
位bmp彩色图转换为位灰度图的方法_第2页
位bmp彩色图转换为位灰度图的方法_第3页
位bmp彩色图转换为位灰度图的方法_第4页
位bmp彩色图转换为位灰度图的方法_第5页
资源描述:

《位bmp彩色图转换为位灰度图的方法》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、24位bmp彩色图转换为24位灰度图的方法一、所用到的流处理函数:fstream:可同时进行读写操作的文件类;或ofstream:写操作(从内存中读数据到文件)的文件类;ifstream:读操作(从文件读数据到内存)的文件类。二、位图文件的格式:①位图文件头,所用结构体:BITMAPFILEHEADER,占14个字节②位图信息头,所用结构体:BITMAPINFOHEADER,占40个字节③颜色表项,所用结构体:RGBQUAD,由biBitCount值决定④数据区,当结构体BITMAPINFOHEADER中的成员变量biBitCount=1时,1个字节代表8个像素;biBitCount=2

2、时,1个字节代表2个像素;biBitCount=8时,1个字节代表1个像素;biBitCount=16时,2个字节代表1个像素;biBitCount=24时,3个字节代表1个像素;RGBQUAD结构体的定义如下:typedefstructtagRGBQUAD{BYTErgbBlue;//蓝色分量BYTErgbGreen;//绿色分量BYTErgbRed;//红色分量BYTErgbReserved;//保留值,必须为0.}RGBQUAD;即一个RGBQUAD结构体占4个字节,当biBitCount=1,2,4,8时,颜色表项分别占2,4,16,256个RGBQUAD结构体大小的空间;当bi

3、BitCount=24时,③颜色表项不占空间,即位图文件只有①②④三项,这是因为数据区中3个字节代表一个像素,本身含有三原色分量值。三、需要注意的问题:1.bmp数据存储时按行从左到右、按列从下到上扫描,所以对于24位bmp文件,数据区前三个字节代表位图左下角第一个元素;2.bmp文件存储的图片数据每行所占的字节数都是4的整数倍,不够的用0补充,所以有biSizeImage=((((bi.Width*bitBitCount)+31)&~31)/8)*bi.biHeight3.对于24位bmp文件,若图片每行像素所占字节数满足是4的整数倍这个条件,由于BITMAPFILEHEADER和BI

4、TMAPINFOHEADER所占的总字节数为54,不是4的倍数,所以补0后为56字节。四、方法一:BOOLCprogram2Dlg::RGB2GRAY(CStringstrPath){fstreamInfile;fstreamOutfile;BITMAPFILEHEADERbfheader={0};BITMAPINFOHEADERbiheader;unsignedchar*src;unsignedchar*dst;//打开与创建Infile.open("In_Picture.bmp",ios::binary

5、ios::in);Outfile.open("Out_Picture.bmp",

6、ios::binary

7、ios::out);//读取文件头与信息头Infile.read((char*)&bfheader,sizeof(bmp_fileheader));Infile.read((char*)&biheader,sizeof(bmp_infoheader));//开辟空间载入内存src=newunsignedchar[biheader.biHeight*biheader.biWidth*3];Infile.read((char*)src,sizeof(unsignedchar)*biheader.biHeight*biheader.biWidth*3);//彩色转灰度像

8、素处理,可在此加入图像处理算法dst=newunsignedchar[biheader.biHeight*biheader.biWidth*3];inttmp;unsignedlongj=0;for(unsignedlongi=0;i

9、te((char*)&bfheader,sizeof(bmp_fileheader));Outfile.write((char*)&biheader,sizeof(bmp_infoheader));Outfile.write((char*)dst,sizeof(unsignedchar)*biheader.biWidth*biheader.biHeight*3);delete[]src;delete[]dst;returnTRUE;

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。