理论-线性混合操作
α取值在0,1之间
void addWeighted(InputArray src1, double alpha, InputArray src2, double beta, double gamma, OutputArray dst, int dtype=-1)
两张图片的大小须一致
#include<opencv2/opencv.hpp>
#include<iostream>
#include<math.h>
using namespace std;
using namespace cv;
int main(int argc, char** argv)
{
Mat src1,src2,dst;
src1 = imread("F:/1.jpg");
src2 = imread("F:/2.jpg");
if (!src1.data)
{
cout << "load image unsuccessful" << endl;
return -1;
}
if (!src2.data)
{
cout << "load image unsuccessful" << endl;
return -1;
}
namedWindow("source1", WINDOW_AUTOSIZE);
imshow("source1", src1);
namedWindow("source2", WINDOW_AUTOSIZE);
imshow("source2", src2);
double alpha = 0.5;
if (src1.rows == src2.rows && src1.cols == src2.cols)
{
addWeighted(src1, alpha, src2, (1.0 - alpha), 0.0, dst);
namedWindow("output", WINDOW_AUTOSIZE);
imshow("output", dst);
}
else
{
printf("could not blend images,size not same!\n");
return -1;
}
waitKey(0);
return 0;
}
还有add(),multiply()等混合方式