使用OpenCV (iOS)对两幅图像求和(求混合(blendi
原理
线性混合操作也是一种典型的二元(两个输入)的像素操作:
通过在范围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))