1

我正在尝试计算 RGB 图像区域的平均颜色。图像的感兴趣区域由掩码表示。我cvAvg在 opencv 中使用了函数,但不知何故我不能正确地做到这一点。我使用了以下代码:

//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);

这是结果:

输入第一张图像,然后是掩码,然后是输出图像。

输入图像 面具 输出

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

4

1 回答 1

0

我想到了。我用它替换了该语句 maskData[(p.y)*inImage->width + p.x] = 1;maskData[(p.y)*maskData->step + p.x] = 1;它现在可以正常工作了。

谢谢。

于 2013-01-31T06:57:47.713 回答