首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 平面设计 > 图形图像 >

OpenCV图像灰度化是如何做的呢

2012-03-06 
OpenCV图像灰度化是怎么做的呢?OpenCv中采用函数cvCvtColor,设置其第三个参数为CV_BGR2GRAY即可实现彩色图

OpenCV图像灰度化是怎么做的呢?
OpenCv中采用函数cvCvtColor,设置其第三个参数为CV_BGR2GRAY即可实现彩色图像的灰度化。

为了验证,我自己写了一小段代码,但是得到的结果不太理想,请大家帮着把把脉。

[code=C/C++][/code]
  ColorImage = cvLoadImage( "12.jpg", -1 ); //载入文件
if (ColorImage == NULL)
return;
int i = ColorImage->width * ColorImage->height;
ptr = new char[i];
for(int j=0; j<ColorImage->height; j++)
{
for(int x=0; x<ColorImage->width; x++)
ptr[j*ColorImage->width+x]=
(char)( 0.072169*ColorImage->imageData[3*(j*ColorImage->width+x)]
+0.715160*ColorImage->imageData[3*(j*ColorImage->width+x)+1]
+0.212671*ColorImage->imageData[3*(j*ColorImage->width+x)+2]); //对RGB三个值加权平均
}
//根据新的数据,创建一个图像头指针
GrayImage = cvCreateImageHeader(cvGetSize(ColorImage), ColorImage->depth, 1);
cvSetData(GrayImage, ptr, GrayImage->widthStep);

  cvNamedWindow("GrayImage", CV_WINDOW_AUTOSIZE); //显示图像
cvShowImage("GrayImage", GrayImage); 
cvWaitKey(0);
cvDestroyWindow("GrayImage");

  以上这段代码得到的灰度图像,为啥感觉有一些地方发亮,感觉对比度不对,和OpenCV里面的函数处理结果相差较大,为什么呢?请高手帮我指出这代码到底有啥问题呢?

[解决办法]
cvLoadImage第二个参数改成0就是灰度图了,还自己转啥
[解决办法]
看看cvCvtColor函数源代码

热点排行