本文通过原理和示例对addWeighted()函数进行详解,,并通过改变融合系数展示多个结果,帮助大家理解和使用。
目录
- 函数原理
- 示例
- 权重(0.5,0.5)
- 权重(0.8,0.2)
- 权重(0.2,0.8)
函数原理
addWeighted()函数的功能是根据给定的权重,将两个图像加权融合到一个输出图像中。加权融合是将两个图像的像素值根据其对应的权重进行加权求和,然后再加上一个标量值。这个过程是元素级的,也就是说,每个像素都会单独进行加权求和。
函数原型:
addWeighted(src1, alpha, src2, beta, gamma, dst, dtype)
参数解释;
src1:输入图像1。
alpha:输入图像1的权重。
src2:输入图像2。
beta:输入图像2的权重。
gamma:添加到结果中的标量。
dst:输出图像,其大小和类型与输入相同。
dtype:输出数组的深度类型,当参数为负数时函数会根据参数dst自动计算类型。
示例
我们首先读取了两个图像img1和img2,然后设置融合阈值,通过改变融合阈值可以查看不同的融合结果。
#include <opencv2/opencv.hpp>
#include <iostream>
using namespace cv;
using namespace std;
int main() {
// 读取两个图像
Mat img1 = imread("image01.jpg");
Mat img2 = imread("image02.jpg");
// 使用addWeighted函数进行加权融合
addWeighted(img1, 0.5, img2, 0.5, 1, img1);
// 显示结果图像
imshow("Result", img1);
//保存结果
imwrite("result.jpg", img1);
waitKey(0);
destroyAllWindows();
return 0;
}
img1
img2
权重(0.5,0.5)
img1和img2权重为0.5和0.5时融合结果:
权重(0.8,0.2)
img1和img2权重为0.8和0.2时融合结果:
权重(0.2,0.8)
img1和img2权重为0.2和0.8时融合结果: