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:
效果图dst:
上一篇: selenium自动化测试
下一篇: python多线程:小牛吃草案例