您的位置:首页 > 运维架构

opencv3学习之addWeight()函数

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

#include <opencv2/opencv.hpp>

#include <opencv2/core/core.hpp>

#include <opencv2/highgui/highgui.hpp>

#include <opencv2/imgproc/imgproc.hpp>

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;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: