怎么从bmp图中得到每个象素的RGB值 我想在把256色的bmp图转成灰度图之前,对彩色图象判断,看它偏红还是偏灰。怎样能得到bmp图中个象素RGB中R的比例。我是菜鸟,vc和图象处理都刚刚学,毕业设计要用,没办法。今天第一次来这里发贴,不知道我的问题能看懂不,希望各位高手不要笑话。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 256色bmp图像有一个颜色表,数据区保存的实际上是这个表的一个索引值[0,255]如果你知道数据区的一个索引a,则你访问BITMAPINFO(具体结构看MSDN)得到RGB值。你的RGB就保存在BITMAPINFO的一个数据成员中! COLORREF rgb;rgb = dc.GetPixel(i,j); //得到图象上(i,j)点的颜色信息GetRValue(rgb);//分别得到R、G、B分量GetGValue(rgb);GetBValue(rgb);用颜色表的概念可能更合理吧 BITMAPFILEHEADERBITMAPINFOHEADER RGBQUADtypedef struct tagRGBQUAD { BYTE rgbBlue; BYTE rgbGreen; BYTE rgbRed; BYTE rgbReserved; } RGBQUAD; kyanitelj(嫣然) 的方法也可以! kyanitelj(嫣然) 的方法实在太慢了。可以用createdibsection等函数,速度起码要比这个快3-5倍。 256也有非调色板的图像的,我想,那还要直接像素读取吧,好多DIB类里面都有这个东东的。用DC是最糟糕和最慢的一种方法了,我想。而且那种还要先转成DDB, bmp文件格式:位图文件头BITMAPFILEHEADER位图信息头BITMAPINFOHEADER调色板Palette(256色及以下的使用,16位等真彩色不用)实际的位图数据ImageData用 JerryGR(紫咖啡) 的思路,先得到bmp的Palette,再通过bmp的ImageData索引Palette的色彩值 COLORREF rgb;rgb = dc.GetPixel(i,j); //得到图象上(i,j)点的颜色信息GetRValue(rgb);//分别得到R、G、B分量GetGValue(rgb);GetBValue(rgb); GetRValue在哪?我要写include———? LB_SETCURSEL消息如何处理 实现多行显示,自动换行和滚动条的edit控件 vc6.0中窗体半透明怎么做? 哪里可以下电子书 为什么失业的总是我. CAN和LON的区别? 请大虾指点有关OnInitDialog问题 熟悉ActiveX的朋友帮解决一个问题 有哪位老兄清楚ime文件的格式,如何使用它 请问各位大哥:怎样在win98或winme下注册和使用动态连接库“PSAPI.DLL”呀? CPropertySheet 为什么不能正常最小化 几个问题。
如果你知道数据区的一个索引a,则你访问BITMAPINFO(具体结构看MSDN)得到RGB值。你的RGB就保存在BITMAPINFO的一个数据成员中!
rgb = dc.GetPixel(i,j); //得到图象上(i,j)点的颜色信息
GetRValue(rgb);//分别得到R、G、B分量
GetGValue(rgb);
GetBValue(rgb);
用颜色表的概念可能更合理吧
BYTE rgbBlue;
BYTE rgbGreen;
BYTE rgbRed;
BYTE rgbReserved;
} RGBQUAD;
可以用createdibsection等函数,速度起码要比这个快3-5倍。
好多DIB类里面都有这个东东的。
用DC是最糟糕和最慢的一种方法了,我想。而且那种还要先转成DDB,
位图文件头BITMAPFILEHEADER
位图信息头BITMAPINFOHEADER
调色板Palette(256色及以下的使用,16位等真彩色不用)
实际的位图数据ImageData用 JerryGR(紫咖啡) 的思路,先得到bmp的Palette,
再通过bmp的ImageData索引Palette的色彩值
rgb = dc.GetPixel(i,j); //得到图象上(i,j)点的颜色信息
GetRValue(rgb);//分别得到R、G、B分量
GetGValue(rgb);
GetBValue(rgb);