?一、简述addWeighted函数
1、作用:可以将两张相同大小,相同类型的图片融合。可以实现图片的多种特效
2、c++原型:
参数一:src1,表示第一个原数组(图片1)
参数二:alpha,第一个数组元素权重
参数三:src2,第二个原数组(图片2)
参数四:beta,第二个数组元素权重
参数五:gamma,一个加到权重总和上的标量值(见下面公式)。不要太大,不然图片一片白。总和等于255以上就是纯白色了
参数六:dst,输出的图片,它和输入的两个数组拥有相同的尺寸和通道数
参数七:dtype ,输出阵列的可选深度,有默认值-1;当两个输入数组具有相同的深度时,这个参数设置为-1
addweighted函数的计算公式: dst = src1[i] * alpha + src2[i] * beta + gamma
二、实现效果?
?
?三、代码
注意:融合的两张图片的分辨率一定要一样
//功能:融合两张图片
void test1::mix2Image()
{
Mat src1,src2,dst;//创建Mat数组,等待存储图片
src1 = imread("E:/images/starsky.png");
src2 = imread("E:/images/skyhorse.png");
// src1 = imread("E:/images/star1.png");
// src2 = imread("E:/images/idol2.png");
//将图1与图2线性混合
//参数分别为:图1,图1的权重,图2,图2的权重,权重和添加的值为3,输出图片src
// addWeighted(src1,0.2,src2,0.9,3,dst);
addWeighted(src1,0.5,src2,0.7,3,dst);//天马行空
//显示图片
imshow("img1",src1);
imshow("img2",src2);
imshow("mix_img1_and_img2",dst);
}
main中测试:
|