-
先上效果图
-
实现原理
通过对图像像素操作 :
线性混合操作
在范围 0-->1 内改变
alpha
,这个操作可以用来对两幅图像或两段视频产生时间上的画面叠化 (cross-dissolve)效果
-
主要代码(合成不同大小的图片)
记得添加 :using namespace cv;
这里使用
addWeighted
来进行两幅图像求和
- 首先先来了解
addWeighted
的参数
addWeighted(InputArray src1, // 图像一 src1
double alpha, // 图像一 alpha 值
InputArray src2, // 图像二 src2
double beta, // 图像二 beta 值
double gamma, // gamma 值
OutputArray dst, // 合成后的 图像 dst
int dtype = -1) // 我代码中省略了
实际上addWeighted
进行了如下计算:
- xCode中合成图像代码如下
// 根据上述对 addWeighted 函数的描述 我们先声明如下参数
double alpha, beta;
Mat src1, src2, dst;此处合成图片,两张图片的像素必须是一样大小的
// 将本地图片转换成 Mat 图像形式
UIImage *image1 = [UIImage imageNamed:@"6.jpg"];
UIImage *image2 = [UIImage imageNamed:@"8.jpg"];
UIImageToMat(image1, src1);
UIImageToMat(image2, src2);
// 调用 addWeighted 对两个图像进行合成
alpha = 0.5;
beta = 1 - alpha;
addWeighted(src1, alpha, src2, beta, 0.0, dst);
// 将 addWeighted 处理结果 dst 转换成 UIImage 对象
_imgView2.image = MatToUIImage(dst);