欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Opencv学习笔记:addWeighted函数(图像融合)

程序员文章站 2024-03-21 23:10:40
...

这个函数的作用是计算两个数组(图像阵列)的加权和。原型如下:

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函数计算以下两个数组(src1 和src2 )的加权和,得到结果输出给第四个参数,也就是addWeighted 函数的作用的矩阵表达式。

	dst = src1 [I]*alpha+ src2[I]*beta + gamma;

理论和函数的讲解就是上面这些,接下来我们来看代码实例,以融会贯通。

int main()
{
	Mat src1, src2, dst;
	src1 = imread("E:\\picture\\马.png");
	src2 = imread("E:\\picture\\星空.png");

	imshow("src1图", src1);
	imshow("src2图", src2);


	addWeighted(src1, 0.3, src2, 0.7, 0, dst);


	imshow("【效果】", dst);

	waitKey(0);

    return 0;
}

待 融合的两张图src1,src2:
Opencv学习笔记:addWeighted函数(图像融合)

效果图dst:

Opencv学习笔记:addWeighted函数(图像融合)

相关标签: opencv