我正在尝试计算RGB图像区域的平均颜色。图像的感兴趣区域由遮罩表示。我在opencv中使用了cvAvg函数,但是以某种方式我无法正确执行。
我使用以下代码:

//Prepare the mask
CvMat*regionMask = cvCreateMat(inImage->height, inImage->width, CV_8UC1);
cvZero(regionMask);
uchar* maskData = regionMask->data.ptr;
if(some_cond)
   maskData[(p.y)*inImage->width + p.x] = 1;

//Compute average and set the output region
cvSet(outImage, cvAvg(inImage, regionMask), regionMask);

结果如下:

首先输入图像,然后输入遮罩,然后输出图像。



我在这里做错什么了吗?感谢您的帮助。

最佳答案

我想到了。我替换了声明
带有maskData[(p.y)*inImage->width + p.x] = 1;maskData[(p.y)*maskData->step + p.x] = 1;,现在可以正常使用。

谢谢。

关于c - opencv中的颜色平均,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14588606/

10-11 18:12