如何使用C++把一个.BMP图片绘制直方图

holly0913 2012-10-26 01:40:09
求教高手绘制一个.BMP图片的直方图。(使用C++6.0)

求教详细步骤。

MFC。

...全文
457 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
jiuyueshouyi 2012-10-31
  • 打赏
  • 举报
回复
这个以前完整地做过一次,简单描述下用vc的处理方式:
1.直接CFile读入整个bmp文件,存入一维或者二维数组即可,bmp文件的格式可以查一下,一切都在BMPFILEHEADER和BMPINFOHEADER两个结构体里面
2.将文件读入后可能需要按照对齐方式补上相应空缺的字节
3.直方图应该就是灰度统计吧,也就是图片里面有多少个像素的灰度值为x
4.画图么,双缓冲,有了数据源,还不好画么
virtualxmars 2012-10-30
  • 打赏
  • 举报
回复
别光谢我~结贴给分才是硬道理
holly0913 2012-10-30
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 的回复:]

第一步当然是采集数据:
首先用Bitmap加载BMP数据
第二步是统计:
int counts[256];
for each byte in colorbytes {
counts[byte]++;
}
第三步,归一化:
int maxVal = max val in counts;
for each val in counts {
val = val / ……
[/Quote]

非常感谢您的回答。
virtualxmars 2012-10-26
  • 打赏
  • 举报
回复
第一步当然是采集数据:
首先用Bitmap加载BMP数据
第二步是统计:
int counts[256];
for each byte in colorbytes {
counts[byte]++;
}
第三步,归一化:
int maxVal = max val in counts;
for each val in counts {
val = val / maxVal;
}

第四步,绘制:
for each val in counts {
draw rectangle at height : val * GRAPH_HEIGHT
offset drawing position;
}
holly0913 2012-10-26
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]

这个区mfc板块找一找吧。首先你要编一个读图像程序,然后再里面绘制直方图程序。建议看看visual c++数字图像典型算法及实现。
[/Quot
想做一个对话框,然后在对话框里面显示直方图。
具体步骤的话可以简要说明一下吗?
olderma 2012-10-26
  • 打赏
  • 举报
回复
这个区mfc板块找一找吧。首先你要编一个读图像程序,然后再里面绘制直方图程序。建议看看visual c++数字图像典型算法及实现。
holly0913 2012-10-26
  • 打赏
  • 举报
回复
补充:bmp图片是8位的,灰度值0-255.

64,282

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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