2015-06-23 176 views
0

我正在计算两幅图像的平均图像,并且不知道在OpenCV中使用函数mean()的正确方法。如何获得OpenCV中几幅图像的平均图像(使用C++)?

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

但是它说

R6010 
-abort() has been recalled 

我怎样才能得到IMG1 & IMG2平均? 谢谢。

回答

2

根据OpenCV的文档:

“功能平均计算数组元素的平均值M,独立地对每个信道,并返回它:”

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

你是否简单地试图做这样的事情?

img3 =(img1 + img2)* 0.5;

[编辑],以避免一些损失,如果值> 255,你应该将图像转换为CV_32F,执行计算之前,再抹上你的结果将操作使用CV CV_8U ::的ConvertTo opencv documentation on ConvertTo

3

您可以使用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; 
相关问题