本节的目的
- 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值可以控制图像在混合后的输出图像中的比例。
结果
本站资源均来自互联网,仅供研究学习,禁止违法使用和商用,产生法律纠纷本站概不负责!如果侵犯了您的权益请与我们联系!
转载请注明出处: 免费源码网-免费的源码资源网站 » 使用opencv合并两个图像
发表评论 取消回复