OpenCV实践(4)- 叠加两幅图片

本文介绍如何使用线性混合技术将两幅图像平滑地融合在一起,并通过调整权重参数实现不同效果。文中提供了详细的OpenCV代码示例及原理说明。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1 目标
(1) 什么是线性混合,有什么用?
(2) 怎样使用addWeighted混合两幅图像?
2 原理
详细的理论请参考计算机视觉:算法和应用一书。
这里我们直接应用其公式:
这里写图片描述
对于上面的公式,很有理解,等式右边就是两个像素值相加,但是权重比不同。所以,我们通过变化这里写图片描述 ,区间是[0,1],这个操作就能带来一副由两幅图片临时相加得到的图像。如果将其应用在幻灯片放映或者视频播放中,岂不是很酷?
3 代码实现
道理很简单,直接上代码:

#include <cv.h>
#include <highgui.h>
#include <iostream>

using namespace cv;

int main( int argc, char** argv )
{
    double alpha = 0.5; double beta; double input;

    Mat src1, src2, dst;

    /// Ask the user enter alpha
    std::cout<<" Simple Linear Blender "<<std::endl;
    std::cout<<"-----------------------"<<std::endl;
    std::cout<<"* Enter alpha [0-1]: ";
    std::cin>>input;

    /// We use the alpha provided by the user if it is between 0 and 1
    if( input >= 0.0 && input <= 1.0 )
    { 
        alpha = input; 
    }

    /// Read image ( same size, same type )
    src1 = imread("../images/LinuxLogo.jpg");
    src2 = imread("../images/WindowsLogo.jpg");

    if( !src1.data ) { printf("Error loading src1 \n"); return -1; }
    if( !src2.data ) { printf("Error loading src2 \n"); return -1; }

    /// Create Windows
    namedWindow("Linear Blend", 1);

    beta = ( 1.0 - alpha );
    addWeighted( src1, alpha, src2, beta, 0.0, dst);

    imshow( "Linear Blend", dst );

    waitKey(0);
    return 0;
}

4 代码解释
(1)为了实现上面的公式,
这里写图片描述
我们需要两幅源图像这里写图片描述这里写图片描述 ,我们使用下面的代码载入:

src1 = imread("../images/LinuxLogo.jpg");
src2 = imread("../images/WindowsLogo.jpg");
警告:因为我们要叠加src1和src2,所以两幅图片必须具有相同的大小(高和宽)和类型。

(2) 应用addWeighted

beta = ( 1.0 - alpha );
addWeighted( src1, alpha, src2, beta, 0.0, dst);

addWeighted的处理过程:
这里写图片描述
在这里,这里写图片描述 就是上面代码中的0.0,它是一个标量,可以对合成后的图片进行像素的调整。
5 结论
运行结果:
这里写图片描述
上图中左半部分就是这里写图片描述 = 0.0,右半部分是 这里写图片描述 = 100时的图片。

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值