opencv c++ 以灰度图方式加载一张图片,并统计该图像素的最大值、最小值、均值以及方差,完整代码

如题所述

第1个回答  推荐于2016-02-29
void main()
{
IplImage *src = cvLoadImage("xxx",1);

int width = src->width;
int height = src->height;

uchar *ptr = src->imageData;
int Iij;

double Imax = 0, Imin = 255, Iave = 0, Idelta = 0;

for(int i=0;i<height;i++)
{
for(int j=0;j<width;j++)
{
Iij = (int) ptr[i*width+j];

if(Iij > Imax)
Imax = Iij;

if(Iij < Imin)
Imin = Iij;

Iave = Iave + Iij;
}
}

Iave = Iave/(width*height);

for(int i=0;i<height;i++)
{
for(int j=0;j<width;j++)
{
Iij = (int) ptr[i*width+j];

Idelta = Idelta + (Iij-Iave)*(Iij-Iave);
}
}

Idelta = Idelta/(width*height);

printf("灰度最大值 = %d\n",Imax);
printf("灰度最小值 = %d\n",Imin);
printf("灰度均值 = %d\n",Iave);
printf("灰度方差 = %d\n",Idelta);

return;
}追问

解决了,谢谢你啦!

本回答被提问者采纳
第2个回答  2014-06-16
不及到耶!!!!!!!!!!!!!!!!!!!!!!