VC直方图统计

来源:互联网 发布:罗马龟甲阵 知乎 编辑:程序博客网 时间:2024/05/22 14:57

刚学VC图像处理不久,昨天纠结了一天计算图像的直方图,结果总是不对,发现问题有二:

1.采用读文件得到的图像数组的指针是指向图像数组的最下面一行的,从下向上的

2.数组存在补零的问题,每一行不满4个字节会补齐,如果直接采用p++的形式,就会导致读进去很多0,然后有其他的像素没有读到,统计的直方图一定是有问题的

3.应该是用无符号的字符型,即unsigned char,这样才能到255


都是一些很简单的问题,但是自己去做,总还是会有疏忽的地方。


代码如下:

unsigned char * p = (unsigned char *)dib.GetBits();
int n = dib.GetBitsPerPixel();//图像一个像素为24位
int i,j;
int m = dib.GetWidth()*dib.GetHeight();

if (m!=0)
{
for(i = 0;i<dib.GetHeight();i++)
{

for (j = 0;j<dib.GetWidth();j++)
{
m_Count[*(p+j)]++;
}
p = p+dib.BytesPerLine();

}
bflag = true;
}

0 0