addWeighted
时间: 2024-01-02 19:14:18 浏览: 34
`addWeighted` 是 OpenCV 库中的一个函数,用于对两个图像进行加权融合。
函数原型如下:
```cpp
void addWeighted(InputArray src1, double alpha, InputArray src2, double beta, double gamma, OutputArray dst, int dtype = -1);
```
其中,`src1` 和 `src2` 是输入图像,`alpha` 和 `beta` 是两个图像的权重系数,`gamma` 是亮度调整值,`dst` 是输出图像,`dtype` 是输出图像的数据类型,默认为 `-1`。
函数的计算公式为:
```
dst = alpha * src1 + beta * src2 + gamma
```
对于同样大小的两幅图像,可以使用 `addWeighted` 函数来实现图像的混合。例如,可以使用该函数将两个图像融合为一个新的图像,其中一个图像作为底层图像,另一个图像作为覆盖图像,通过调整权重系数可以使得覆盖图像的透明度不同,从而实现图像的混合效果。
下面是一个示例代码:
```cpp
#include <opencv2/opencv.hpp>
#include <iostream>
using namespace cv;
int main(int argc, char* argv[])
{
// 读取两幅图像
Mat img1 = imread("lena.jpg");
Mat img2 = imread("flower.jpg");
// 调整图像大小
resize(img2, img2, img1.size());
// 设置权重系数
double alpha = 0.6;
double beta = 0.4;
// 进行加权融合
Mat dst;
addWeighted(img1, alpha, img2, beta, 0.0, dst);
// 显示结果
imshow("result", dst);
waitKey(0);
return 0;
}
```
该代码将两幅图像按照 6:4 的比例进行加权融合,并显示结果。你可以根据需要调整权重系数来获得不同的效果。