【OpenCV】图像混合
理论-线性混合操作
alpha取值0-1
相关API (addWeighted)
参数1:输入图像Mat – src1
参数2:输入图像src1的alpha值
参数3:输入图像Mat – src2
参数4:输入图像src2的alpha值
参数5:gamma值
参数6:输出混合图像
注意点:两张图像的大小和类型必须一致才可以
代码实现
#include<opencv2/opencv.hpp>
#include<math.h>
#include<iostream>
using namespace cv;
using namespace std;
int main(int argc, char**argv)
{
Mat src1, src2, dst;
src1 = imread("3.jpg");
src2 = imread("6.jpg");
if (src1.empty()) {
cout << "can not load the src1\n" << endl;
return -1;
}
if (!src2.data) {
cout << "can not load the src2\n" << endl;
return -1;
}
double alpha = 0.5;
if (src1.cols == src2.cols && src1.rows == src2.rows && src1.type() == src2.type()) {
addWeighted(src1, alpha, src2, (1.0 - alpha), 0.0, dst);
imshow("src1", src1);
imshow("src2", src2);
imshow("dst", dst);
imwrite("after blend.jpg", dst);
}
else {
cout << "cannot blend the two images\n" << endl;
return -1;
}
waitKey(0);
return 0;
}
效果图
1.src1
2.src2
3.混合后(alpha=0.5)