#include <opencv2/opencv.hpp>
#include <iostream>
#include <math.h>
using namespace cv;
int main(void) {
Mat src1, src2, dst;
src1 = imread("C:/Users/Robin/Pictures/2.jpg");
src2 = imread("C:/Users/Robin/Pictures/3.jpg");
if (!src1.data) {
std::cout << "could not load image1..\n";
return -1;
}
if (!src2.data) {
std::cout << "could not load image2..\n";
return -1;
}
double alpha = 0.5;
if (src1.rows == src2.rows && src1.cols == src2.cols && src1.type() == src2.type()) {
addWeighted(src1, alpha, src2, (1, 0 - alpha), 0.0, dst);
//add(src1, src2, dst, Mat());不好
multiply(src1, src2, dst, 1.0);
namedWindow("blend demo", CV_WINDOW_AUTOSIZE);
imshow("blend demo", dst);
}
else {
printf("could not bledn..\n");
}
/*imshow("linux", src1);
imshow("win10", src2);*/
waitKey(0);
return 0;
}
其中 的取值范围为0~1之间
相关API(addWegihted)
void cv::addWeighted(
inputArray src1,
double alpha
double beta,
double gamma,
OutputArray dst,
imt dtype=-1
)
参数1:输入图像Mat – src1 参数2:输入图像src1的alpha值 参数3:输入图像Mat – src2 参数4:输入图像src2的alpha值 参数5:gamma值 参数6:输出混合图像
注意点:两张图像的大小和类型必须一致才可以