OpenCV-1.6 图像叠加(混合)

目标

本小节将学习如下内容:

  • 什么是线性混合及其价值
  • 如何通过addWeighted()方法混合两张图像

理论

注:
  下述内容引用自书籍Computer Vision: Algorithms and Applications。

从之前的教程中我们已经学习到了单个像素的操作。接下来我们将使用二元操作方法进行图像混合:
在这里插入图片描述
通过改变α的大小可以改变图像混合的效果,是不是跟制作电影或者幻灯片一样炫酷。

源代码

        double alpha = 0.5; double beta; double input;
        System.loadLibrary("libs/"+ Core.NATIVE_LIBRARY_NAME);
        String filename1 = "images/lena.jpg";
        String filename2 = "images/opencv.jpg";
        Mat src1  = imread(filename1);
        Mat src3  = imread(filename2);
        Mat src2  = new Mat();
        resize(src3,src2,src1.size());
        Mat dst = new Mat();
        beta = ( 1.0 - alpha );
        addWeighted( src1, alpha, src2, beta, 0.0, dst);
        imshow("Linear Blend", dst);
        waitKey(0);
        System.exit(0);

解释

代码内容比较简单,首先我们需要打开两张图像,由于我没找到两张一样大小的图像,因此先将src2图像利用resize()方法重新调整大小跟src1一致。

resize(src2,src3,src1.size());

调用addWeighted() 方法:

      addWeighted( src1, alpha, src2, beta, 0.0, dst);

上述代码公式为:
在这里插入图片描述
该方法中γ参数设置成0.

结果

在这里插入图片描述
大家可以尝试改变α,β,γ三个参数。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值