提取像素的灰度值问题

bsgba211 2009-04-04 12:34:40
public:
LONG m_lHeight; // DIB的高度
LONG m_lWidth; // DIB的宽度
char * m_lpDIBBits; // 指向当前DIB象素的指针
LONG m_lCount[256]; // 各个灰度值的计数
// 计算各个灰度值的计数
for (i = 0; i < m_lHeight; i ++)
{
for (j = 0; j < m_lWidth; j ++)
{
lpSrc = (unsigned char *)m_lpDIBBits + lLineBytes * i + j;
m_lCount[*(lpSrc)]++;
}
}
这段代码是什么意思,lpSrc = (unsigned char *)m_lpDIBBits + lLineBytes * i + j;
灰度值怎么样能保存到一个二维数组理,就像matlab一样的打开图像后显示每个点的灰度值,各位大侠帮帮忙……
...全文
340 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
guopanfengdiy 2009-08-06
  • 打赏
  • 举报
回复
楼上的说:
lpSrc = (unsigned char *)m_lpDIBBits + lLineBytes * i + j;
为:
得到指向图像第i行,第j列数据的指针

我觉得不对吧?
应该是倒数第i行第j个像素的指针

指向图像第i行,第j列数据的指针应该为:
lpSrc = (unsigned char *)m_lpDIBBits + lLineBytes *(lHeight-1-i) + j;
cau228charm 2009-04-05
  • 打赏
  • 举报
回复
lpSrc = (unsigned char *)m_lpDIBBits + lLineBytes * i + j; 

这个代码的意思是:得到指向图像第i行,第j列数据的指针
m_lCount[*(lpSrc)]++; 

这句代码意思统计各个灰度值在图像中出现的次数,如m_lCount[9]=25,表示灰度值为9的像素在图像中出现了25次。

灰度值保存到一个二维数组里可以这样做

public:
LONG m_lHeight; // DIB的高度
LONG m_lWidth; // DIB的宽度
char * m_lpDIBBits; // 指向当前DIB象素的指针
LONG m_Imagemat[m_lHeight][m_lWidth]; // 各个灰度值的计数
// 计算各个灰度值的计数
for (i = 0; i < m_lHeight; i ++)
{
for (j = 0; j < m_lWidth; j ++)
{
lpSrc = (unsigned char *)m_lpDIBBits + lLineBytes * i + j;
m_Imagemat[i][j]; [*(lpSrc)];
}
}

zwqxin 2009-04-04
  • 打赏
  • 举报
回复
灰度值的计数呗~

灰度值保存到一个二维数组.....BMP的话,首先你得知道你要保存什么,RGB分量还是索引什么的,还得弄清楚源图片是多少位的.....

19,468

社区成员

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

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