opencv 混合两个图像addWeighted()函数原理解析

文章目录

  • 概念
  • opencv函数支持cv::addWeighted()
    • 函数原型
    • 代码示例
    • 效果:


概念

图像混合为线性混合运算,理论公式如下:
在这里插入图片描述
f0(x):表示图像1的像素值
f1(x):表示图像2的像素值
α0:表示两个图像的权重参数。值区间0-1;

opencv函数支持cv::addWeighted()

函数原型

CV_EXPORTS_W void addWeighted(InputArray src1, double alpha, InputArray src2,
                              double beta, double gamma, OutputArray dst, int dtype = -1);

参数多了一个gamma:表示在最终的结果图中加上的偏移量。

代码示例

代码如下(示例):

    cv::Mat src1;
     src1 = cv::imread("D:\\QtProject\\Opencv_Example\\addWeighted\\addWeighted1.png", cv::IMREAD_COLOR);
     if (src1.empty()) {
       cout << "Cannot load image" << endl;
       return;
     }
     cv::Mat src2;
     src2 = cv::imread("D:\\QtProject\\Opencv_Example\\addWeighted\\addWeighted2.png", cv::IMREAD_COLOR);
     if (src2.empty()) {
       cout << "Cannot load image" << endl;
       return;
     }
     cv::Mat dst;
     cv::addWeighted(src1, 0.5, src2, 0.5, 0, dst);

效果:

图1
opencv 混合两个图像addWeighted()函数原理解析_第1张图片

图2opencv 混合两个图像addWeighted()函数原理解析_第2张图片

混合之后:

opencv 混合两个图像addWeighted()函数原理解析_第3张图片

你可能感兴趣的:(opencv,图像处理,opencv,计算机视觉,c++)