OpenCV for iOS 学习笔记(五)—— 使用OpenCV合成两张图片


  • 环境配置 :OpenCV在xCode中的安装与环境配置环境配置

  • 先上效果图
OpenCV for iOS 学习笔记(五)—— 使用OpenCV合成两张图片_第1张图片
上面两张是原图,下面是合成后的效果
  • 实现原理

通过对图像像素操作 : 线性混合操作

算法公式

在范围 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进行了如下计算:
    `addWeighted`算法(这里的`alpha`、`beta`、`gamma`都用英文表示)
  • 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);
  • 参考资料 :使用OpenCV对两幅图像求和(求混合(Blending))

你可能感兴趣的:(OpenCV for iOS 学习笔记(五)—— 使用OpenCV合成两张图片)