如何在OpenCV中获取多个图像的平均图像(使用C ++)?

时间:2015-06-23 08:17:32

标签: c++ opencv

我正在计算两张图片的平均图像,并且不知道在OpenCV中使用函数mean()的正确方法。

Mat img1,img2,img3;
img1=imread("picture1.jpg");
img2=imread("picture2.jpg");    
img3=mean(img1,img2);

然而它说

R6010
-abort() has been recalled

如何获得img1&的平均值? IMG2? 感谢。

2 个答案:

答案 0 :(得分:4)

根据opencv文档:

“函数mean为每个通道独立计算数组元素的平均值M,并返回它:”

这意味着它应该为您的每一层图像返回一个标量,第二个参数是一个像素掩码,用于执行计算的位置

你真的尝试做过这样的事吗?

img3 =(img1 + img2)* 0.5;

[编辑]以避免一些损失,如果值> 255,您可能应该在执行计算之前将图像转换为CV_32F,然后使用cv :: convertTo opencv documentation on ConvertTo

将操作结果转换为CV_8U

答案 1 :(得分:4)

您可以使用cv::accumulate

Mat img3 = Mat::zeros(img1.size(), CV_32F); //larger depth to avoid saturation
cv::accumulate(img1, img3);
cv::accumulate(img2, img3);
img3 = img3/2;