【OpenCV】图像线性混合

addWeighted()函数

void cv::addWeighted ( InputArray src1, double alpha, InputArray src2, double beta,
   double gamma, OutputArray dst, int dtype = -1 )

dst = src1*alpha + src2*beta + gamma;

程序较简单,在此不赘述。


#include "opencv2/imgcodecs.hpp"
#include "opencv2/highgui.hpp"
#include <iostream>

using namespace cv;
using namespace std;

int main(void)
{
    double alpha = 0.5; double beta; double input;      // 默认缺省值为0.5

    Mat src1, src2, dst;

    cout << "Simple Linear Blender" << endl;
    cout << "---------------------" << endl;
    cout << "*Enter alpha [0.0-1.0]" << endl;
    cin >> input;

    if (input >= 0 && input <= 1)                       // 判断输入参数是否在区间[0,1]
    {
        alpha = input;
    }

    src1 = imread("../data/LinuxLogo.jpg");
    src2 = imread("../data/WindowsLogo.jpg");

    if (src1.empty()) { cout << "Error loading src1" << endl; return -1; }
    if (src2.empty()) { cout << "Error loading src2" << endl; return -1; }

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

    imshow("LinuxLogo", src1);
    imshow("WindowsLogo", src2);
    imshow("Linear Blend", dst);
    waitKey(0);

    return 0;
}

运行结果

Simple Linear Blender
---------------------
*Enter alpha [0.0-1.0]
0.4




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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值