【问题标题】:How can I get the mean image of several images in OpenCV(using C++)?如何在 OpenCV(使用 C++)中获得多个图像的平均图像?
【发布时间】:2015-06-23 08:17:32
【问题描述】:

我正在计算两个图像的平均图像,但不知道在 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 的平均值? 谢谢。

【问题讨论】:

    标签: c++ opencv


    【解决方案1】:

    你可以使用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;
    

    【讨论】:

      【解决方案2】:

      根据opencv文档:

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

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

      您是否只是尝试过这样做?

      img3 = (img1+img2) * 0.5;

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

      【讨论】:

      • 为时已晚 5 年,但对于像我这样后来找到这个答案的人来说可能有用:我认为如果你先乘以 0.5,然后将它们相加,你就可以避免大于 255 的值导致的损失。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-09-06
      • 2014-08-02
      • 1970-01-01
      • 1970-01-01
      • 2017-08-23
      • 2021-05-20
      • 2011-12-17
      相关资源
      最近更新 更多