美文网首页绘制iOS开发iOS开发
OpenCV for iOS 学习笔记(五)—— 使用OpenC

OpenCV for iOS 学习笔记(五)—— 使用OpenC

作者: FLNuo | 来源:发表于2016-10-19 17:00 被阅读388次


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

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

算法公式
在范围 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 for iOS 学习笔记(五)—— 使用OpenC

    本文链接:https://www.haomeiwen.com/subject/ueexuttx.html