Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/147.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何在OpenCV中获得多个图像的平均图像(使用C+;+;)?_C++_Opencv - Fatal编程技术网

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

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,并返

我正在计算两幅图像的平均图像,但不知道在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,并返回它:

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

你有没有试过这样做

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而造成的损失。