-
環(huán)境配置 :OpenCV在xCode中的安裝與環(huán)境配置環(huán)境配置
-
先上效果圖
上面兩張是原圖担映,下面是合成后的效果
-
實現(xiàn)原理
通過對圖像像素操作 :
線性混合操作
算法公式
在范圍 0-->1 內(nèi)改變
alpha
,這個操作可以用來對兩幅圖像或兩段視頻產(chǎn)生時間上的畫面疊化 (cross-dissolve)效果
-
主要代碼(合成不同大小的圖片)
記得添加 :using namespace cv;
這里使用
addWeighted
來進行兩幅圖像求和
- 首先先來了解
addWeighted
的參數(shù)
addWeighted(InputArray src1, // 圖像一 src1
double alpha, // 圖像一 alpha 值
InputArray src2, // 圖像二 src2
double beta, // 圖像二 beta 值
double gamma, // gamma 值
OutputArray dst, // 合成后的 圖像 dst
int dtype = -1) // 我代碼中省略了
實際上addWeighted
進行了如下計算:
`addWeighted`算法(這里的`alpha`叫潦、`beta`蝇完、`gamma`都用英文表示)- xCode中合成圖像代碼如下
// 根據(jù)上述對 addWeighted 函數(shù)的描述 我們先聲明如下參數(shù)
double alpha, beta;
Mat src1, src2, dst;此處合成圖片,兩張圖片的像素必須是一樣大小的
// 將本地圖片轉(zhuǎn)換成 Mat 圖像形式
UIImage *image1 = [UIImage imageNamed:@"6.jpg"];
UIImage *image2 = [UIImage imageNamed:@"8.jpg"];
UIImageToMat(image1, src1);
UIImageToMat(image2, src2);
// 調(diào)用 addWeighted 對兩個圖像進行合成
alpha = 0.5;
beta = 1 - alpha;
addWeighted(src1, alpha, src2, beta, 0.0, dst);
// 將 addWeighted 處理結(jié)果 dst 轉(zhuǎn)換成 UIImage 對象
_imgView2.image = MatToUIImage(dst);