OpenCV核心功能---使用OpenCV添加(混合)两个图像

理论

一个有趣的二元(双输入)运算符是线性混合运算符:

通过从0→1改变α,此运算符可用于执行两个图像或视频之间的时间交叉融合。

代码

#include <opencv2/opencv.hpp>
#include <iostream>
using namespace cv;
int main( int argc, char** argv )
{
 double alpha = 0.5; double beta; double input;
 Mat src1, src2, dst;
 std::cout<<" Simple Linear Blender "<<std::endl;
 std::cout<<"-----------------------"<<std::endl;
 std::cout<<"* Enter alpha [0-1]: ";
 std::cin>>input;
 if( input >= 0.0 && input <= 1.0 )
   { alpha = input; }
 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; }
 namedWindow("Linear Blend", 1);
 beta = ( 1.0 - alpha );
 addWeighted( src1, alpha, src2, beta, 0.0, dst);
 imshow( "Linear Blend", dst );
 waitKey(0);
 return 0;
}

解释

  1. 因为我们要执行:我们需要两个源图像(f0(x)和f1(x))。 所以,我们以通常的方式加载它们:
  2. 现在我们需要生成g(x)图像。 为此,add_weighted:addWeighted函数非常方便:
  3. 创建窗口,显示图像并等待用户结束程序。

运行结果

参考网址:https://docs.opencv.org/3.1.0/d5/dc4/tutorial_adding_images.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值