使用OpenCV (iOS)對兩幅圖像求和(求混合(blending))(6)

原理

線性混合操作也是一種典型的二元(兩個輸入)的像素操作

通過在范圍0~1內改變,這個操作可以用來對兩幅圖片或者兩段視頻產生時間上的畫面疊化。

主要代碼

使用addWeighted來進行兩張圖像求和(這兩站圖片的像素必須是一樣的)

(1)addWeighted的參數

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);

實現效果


參考文章

OpenCV for iOS 學習筆記(五)—— 使用OpenCV合成兩張圖片

使用OpenCV對兩幅圖像求和(求混合(blending))


最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容