菜鸟求救:如何获取24位位图的每个像素的RGB值,然后把RGB值的均值保存在一个数组中

wu841227 2008-10-21 12:34:13
如题
不胜感激~最好有代码~~~
...全文
142 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
cqlinlin_miao 2008-10-22
  • 打赏
  • 举报
回复
你可以参考一下精通visual c++图像处理编程这本书,里面处理的图像是24位图
24位图每个像素占三个字节,从左到右每个字节分别存储蓝,绿,红的颜色值.

位图信息里面就直接包含了RGB的信息

BITMAPINFO* lpbi=(BITMAPINFO *)GlobalLock(hDib);
for(int i=0;i<wNumColors;i++)
{R[i]=lpbi->bmiColors[i].rgbRed;
G[i]=lpbi->bmiColors[i].rgbGreen;
B[i]=lpbi->bmiColors[i].Blue;
}
其中wNumColors=DIBNumColors((LPBYTE)lpbi)
laoma_hbu 2008-10-21
  • 打赏
  • 举报
回复
可以看看msdn的例子DIBLOOK.
wu841227 2008-10-21
  • 打赏
  • 举报
回复
UINT * pData = new UINT[3*Width * Height];//用于存放像素值的数组
GetDIBits(pDC->GetSafeHdc(),hImage,0,Height,pData,m_pBmpInfo,DIB_RGB_COLORS);
如何把pData里面的RGB分解出来放到三个数组中去呢????
wu841227 2008-10-21
  • 打赏
  • 举报
回复
看不懂~希望能给出代码~~
VsirSoft 2008-10-21
  • 打赏
  • 举报
回复
CDC::GetPixel

COLORREF GetPixel(int x,int y) const;
COLORREF GetPixel(POINT point) const;

返回值:对于函数的两种形式,则返回给定点的RGB值。如果不能在剪切区指定点的坐标,则返回-1。

参数: x 待检验的点的X逻辑坐标。
y 待检验的点的Y逻辑坐标。
point 待检验的点的X和Y逻辑坐标。

说明:
获得X,Y指定的像素的RGB值。该点必须在剪切区内。如果不在剪切区内,函数不起作用并返回-1。不是所有的设备都支持GetPixel函数。要了解更多的信息,请参阅GetDeviceCaps成员函数下RC_BITBLT的光栅能力。GetPixel成员函数有两种形式。第一种带两个坐标值;第二种带POINT结构或CPoint对象。

19,468

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 图形处理/算法
社区管理员
  • 图形处理/算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧