获取HDIB每个像素的RGB值

wenstory 2009-11-18 11:14:00
很菜鸟的问题
我已经将图片加载为HDIB了
现在需要将里面每个像素的RGB值取出来
...全文
144 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
fandh 2009-11-20
  • 打赏
  • 举报
回复
http://www.codeproject.com/KB/graphics/cximage.aspx
cximage的下载地址,楼主下了自己看吧!
tan625747 2009-11-20
  • 打赏
  • 举报
回复
px = new unsigned char[bm.bmHeight*bm.bmWidthBytes];//定义像数数组
4楼已给出理论方法

下面是具体代码实现




GetBitmapBits(HDIB,bm.bmHeight*bm.bmWidthBytes,px);
PixelBytes = bm.bmBitsPixel/8;

rgb_b = (g_pt.y)*bm.bmWidthBytes+(g_p.x)*PixelBytes;
g_pt.x g_pt.y 图像x y坐标

RGB值为
px[rgb_b]=G
px[rgb_b+1]=R
px[rgb_b+2]=B

请仔细看下文
http://hi.baidu.com/126_/blog/item/2ad1fd3d74a37fc39e3d622c.html
mmilmf 2009-11-19
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 cloudyi 的回复:]
1. 直接用文件读取的方式操作吧, 如果是bmp格式的话, 移动文件指针到调色板后(即真实的位图数据开始处)开始读取位图数据, 数据的排序方式是从最后一行向前排序, 每一行的数据是从图像行的从左到右排列, 每个像素点的排列方式是B, G, R排列, 只要取出每一行数据的行首地址, 即可获取R, G, B分量
2. 而且这样可以获取位图的相关信息如宽, 高, 等, 网上可以查找相应的类CDib, 如果有时间, 可以对位图的相关知识熟悉下自己写个类
3. 如果格式不为bmp, 那么可以在操作之前进行格式转换, 比如用现在的库CxImage, 也是开源的
[/Quote]

bucuo
wltg2001 2009-11-18
  • 打赏
  • 举报
回复
用GetDIBits可以将位图数据存到一个数组中去
ezhuyin 2009-11-18
  • 打赏
  • 举报
回复
你可以把图片用CImage加载,然后里面用GetPixel函数读取每一个像素的RGB
cloudyi 2009-11-18
  • 打赏
  • 举报
回复
1. 直接用文件读取的方式操作吧, 如果是bmp格式的话, 移动文件指针到调色板后(即真实的位图数据开始处)开始读取位图数据, 数据的排序方式是从最后一行向前排序, 每一行的数据是从图像行的从左到右排列, 每个像素点的排列方式是B, G, R排列, 只要取出每一行数据的行首地址, 即可获取R, G, B分量
2. 而且这样可以获取位图的相关信息如宽, 高, 等, 网上可以查找相应的类CDib, 如果有时间, 可以对位图的相关知识熟悉下自己写个类
3. 如果格式不为bmp, 那么可以在操作之前进行格式转换, 比如用现在的库CxImage, 也是开源的
hhwei1985 2009-11-18
  • 打赏
  • 举报
回复
up

19,469

社区成员

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

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