C++ 如何在OpenCV中获得多个图像的平均图像(使用C+;+;)?
我正在计算两幅图像的平均图像,但不知道在OpenCV中使用函数mean()的正确方法C++ 如何在OpenCV中获得多个图像的平均图像(使用C+;+;)?,c++,opencv,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的平均值? 谢谢。根据opencv文档: 函数mean为每个通道独立计算数组元素的平均值M,并返
Mat img1,img2,img3;
img1=imread("picture1.jpg");
img2=imread("picture2.jpg");
img3=mean(img1,img2);
不管它怎么说
R6010
-abort() has been recalled
如何获得img1和img2的平均值?
谢谢。根据opencv文档: 函数mean为每个通道独立计算数组元素的平均值M,并返回它: 这意味着它应该为图像的每一层返回一个标量,第二个参数是执行计算的像素掩码 你有没有试过这样做 img3=(img1+img2)*0.5
[编辑]为避免值大于255时出现一些损失,您可能应该在执行计算之前将图像转换为CV_32F,然后使用CV::convertTo将操作结果转换为CV_8U您可以使用
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;
5年太晚了,但对于像我这样的人来说,这可能是有用的,因为他们后来找到了这个答案:我认为,如果你先乘以0.5,然后再将它们相加,你就可以避免因数值大于255而造成的损失。