原理
線性混合操作也是一種典型的二元(兩個輸入)的像素操作:
通過在范圍0~1內(nèi)改變幔妨,這個操作可以用來對兩幅圖片或者兩段視頻產(chǎn)生時間上的畫面疊化。
主要代碼
使用addWeighted來進行兩張圖像求和(這兩站圖片的像素必須是一樣的)
(1)addWeighted的參數(shù)
addWeighted(InputArray src1,// 圖像一 src1
? ? ? ? ? ? ? ? ? ? ? ? ?double alpha,// 圖像一 alpha 值
? ? ? ? ? ? ? ? ? ? ? ? ? InputArray src2,// 圖像二 src2
? ? ? ? ? ? ? ? ? ? ? ? ? ?double ?beta,// 圖像二 beta 值
? ? ? ? ? ? ? ? ? ? ? ? ? ? double ?gamma,// gamma 值
? ? ? ? ? ? ? ? ? ? ? ? ? ? ?OutputArray dst,// 合成后的 圖像?
? ? ? ? ? ? ? ? ? ? ? ? ? ? dstintd type =-1)// 我代碼中省略了
(2)實際上addWeight的操作
實際上addWeighted進行了如下計算:
addWeighted算法(這里的alpha谍椅、beta误堡、gamma都用英文表示)
(3)在xcode中合成的代碼
double alpha,beta;
Mat src1,src2,dst;
UIImage *image1 = [UIImage imageNamed:@"01.jpg"];
UIImage *image2 = [UIImage imageNamed:@"02.jpg"];
UIImageToMat(image1, src1);
UIImageToMat(image2, src2);
alpha = 0.5;
beta = 1-alpha;
addWeighted(src1, alpha, src2, beta, 0.0, dst);
imagView2.image = MatToUIImage(dst);
實現(xiàn)效果
參考文章
OpenCV for iOS 學習筆記(五)—— 使用OpenCV合成兩張圖片
使用OpenCV對兩幅圖像求和(求混合(blending))