我正在计算两张图片的平均图像,并且不知道在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? 感谢。
答案 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;