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



  • 先上效果图
上面两张是原图,下面是合成后的效果
  • 实现原理

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

算法公式

在范围 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);
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容