综述
void addWeighted(InputArray src1, double alpha, InputArray src2, double beta, double gamma, OutputArray dst, int dtype=-1)
- 第一个参数,InputArray 类型的srcl, 表示需要加权的第一个数组,常常填一个Mat;
- 第二个参数,double类型的alpha, 表示第一个数组的权重;
- 第三个参数,InputArray 类型的src2, 表示第二个数组,它需要和第一个数组拥有相同的尺寸和通道数;
- 第四个参数,double 类型的beta, 表示第二个数组的权重值;
- 第五个参数,double类型的gamma, 一个加到权重总和上的标量值。其含义通过接下来列出的式子自然会理解;
- 第六个参数,OutputArray 类型的dst,输出的数组,它和输入的两个数组拥有相同的尺寸和通道数:
- 第七个参数,int类型的dtype, 输出阵列的可选深度,有默认值-1。当两个输入数组具有相同的深度时,这个参数设置为-1 (默认值),即等同于srcl .depth()。
addWeighted 函数的作用的矩阵表达式:
dst = src1[I] * alpha + src2[I] * beta + gamma
测试代码
#include "widget.h"
#include "ui_widget.h"
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc/imgproc.hpp>
using namespace cv;
Widget::Widget(QWidget *parent)
: QWidget(parent)
, ui(new Ui::Widget)
{
ui->setupUi(this);
//载入图像
cv::Mat mat1 = imread("C:/opencv/111.jpg");
cv::Mat mat2 = imread("C:/opencv/333.jpg");
//输出图片
cv::Mat mat3;
//融合
cv::addWeighted(mat1,0.8,mat2,0.8,0,mat3);
namedWindow("显示器0", WINDOW_AUTOSIZE );
imshow("显示器0", mat1 );
namedWindow("显示器1", WINDOW_AUTOSIZE );
imshow("显示器1", mat2 );
namedWindow("显示器2", WINDOW_AUTOSIZE );
imshow("显示器2", mat3 );
}
Widget::~Widget()
{
delete ui;
}
测试结果
参考