可以使用OpenCV的cv::addWeighted函数来进行两张图片的相加处理。两张图片进行相加,其原理相当于是表示图像的两个矩阵进行相加,那么这时应该注意的是:既然是矩阵相加,那么矩阵的行和列也要求相对应吧,所以两张加载的图片的尺寸必须是一样的,不然的话就会出现错误。
代码实现:
#include <iostream>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/core/core.hpp>
#include <opencv2/imgproc/imgproc.hpp>
using namespace std;
int main()
{
cout<<"add Image:"<<endl;
cv::Mat ahead=cv::imread("./images/canal1.jpg");
if(!ahead.data)
cout<<"ahead image load fail"<<endl;
cv::Mat behide=cv::imread("./images/boldt.jpg");
if(!behide.data)
cout<<"behide image load fail"<<endl;
double alpha=0.7;
double beta=0.9;
cv::namedWindow("fix Image",1);
cv::Mat result;
cv::addWeighted(ahead,alpha,behide,beta,0,result);
cv::imshow("show fixedImage",result);
cv::waitKey(0);
return 0;
}
结果:
原始图像: