opencv3学习之addWeight()函数

//15.addWeighted()实现图像线性混合效果,就像是PPT的动画效果那样,两层图像融合在一起,注意叠加混合和线性混合是不同的,叠加像是个logo直接粘过去,而线性混合是将两幅图融合在一起,朦朦胧胧那种

#include

#include

#include

#include

using namespacecv;

bool LinearBlending(){

    double alphaValue=0.5;

    double betaValue;

    Mat srcImage2,srcImage3,dstImage;

    

    srcImage2=imread("/Users/oumoemoe/Downloads/alpha.png");

    srcImage3=imread("/Users/oumoemoe/Downloads/girl.png");

    

    Mat imageROI=srcImage3(Rect(0,0,srcImage2.cols,srcImage2.rows));//这个addWeighted函数要求两个图像的尺寸和类型都一样,所以我就设置了这个ROI感兴趣区域,把大一点的那张图截取里一些,这个属于自己的想法加上去的,学会思考了,哈哈哈给自己点个赞

    

    if(!srcImage2.data){printf("srcImage2读取失败\n");returnfalse;}

    if(!srcImage3.data){printf("srcImage3读取失败\n");returnfalse;}

    

    betaValue=1.0-alphaValue;//函数的意思我明白,但是这个值的设置还不是很懂

    addWeighted(srcImage2, alphaValue, imageROI, betaValue,0.0, dstImage);

    

    namedWindow("原图",1);

    imshow("原图", srcImage2);

    namedWindow("处理后",1);

    imshow("处理后", dstImage);

    

    returntrue;

}

int main(){

    LinearBlending();

    waitKey(0);//经常忘记这条语句,然后程序什么都不输出,马虎

    return0;

}


你可能感兴趣的:(opencv3)