1. 程式人生 > >opencv3學習之addWeight()函式

opencv3學習之addWeight()函式

//15.addWeighted()實現影象線性混合效果,就像是PPT的動畫效果那樣,兩層影象融合在一起,注意疊加混合和線性混合是不同的,疊加像是個logo直接粘過去,而線性混合是將兩幅圖融合在一起,朦朦朧朧那種

#include <opencv2/opencv.hpp>

#include <opencv2/core/core.hpp>

#include <opencv2/highgui/highgui.hpp>

#include <opencv2/imgproc/imgproc.hpp>

usingnamespacecv;

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;

}