使用opencv合并两个图像

本节的目的

  • linear blending(线性混合)
  • 使用**addWeighted()**来添加两个图像

原理

(其实我也没太懂,留个坑,感觉本科的时候线代没学好。不对,我本科就没学线代。)

在这里插入图片描述

源码分析

源码链接

#include "opencv2/imgcodecs.hpp"
#include "opencv2/highgui.hpp"
#include <iostream>
 
using namespace cv;
 
// we're NOT "using namespace std;" here, to avoid collisions between the beta variable and std::beta in c++17
using std::cin;
using std::cout;
using std::endl;
 
int main( void )
{
 double alpha = 0.5; 
 double beta; 
 double input;
 
 Mat src1, src2, dst;
 
 cout << " Simple Linear Blender " << endl;
 cout << "-----------------------" << endl;
 cout << "* Enter alpha [0.0-1.0]: ";
 cin >> input;
 
 // 如果用户输入的 alpha 值在 0 到 1 之间,则使用用户提供的 alpha
 if( input >= 0 && input <= 1 )
 { alpha = input; }
 
 // 获取两幅将要混合的图片
 src1 = imread( samples::findFile("LinuxLogo.jpg") );
 src2 = imread( samples::findFile("WindowsLogo.jpg") );
 
 // 检查图像是否加载成功
 if(src1.empty()) { 
     cout << "Error loading src1" << endl; 
     return EXIT_FAILURE; 
 }
 if(src2.empty()) { 
     cout << "Error loading src2" << endl; 
     return EXIT_FAILURE; 
 }
 
 // 计算beta值
 beta = ( 1.0 - alpha );
// 将两幅图像按比例混合
 addWeighted( src1, alpha, src2, beta, 0.0, dst);
 
 imshow( "Linear Blend", dst );
 waitKey(0);
 
 return 0;
}

上文中的alpha和beta值可以控制图像在混合后的输出图像中的比例。

结果

在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值