Qt+OpenCV联合开发(九)--融合图像

 一、简述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中测试:

Qt+OpenCV联合开发(九)--融合图像_第1张图片

你可能感兴趣的:(Qt实战,opencv,C/C++,qt,opencv)