(一)线性混合操作
(二)相关API(addWeighted)
Void addWeighted(InputArray src1,
double alpha,
InputArray src2,
double beta,
double gamma,
outputArray dst)
参数1 :输入图像 Mat-sr1
参数2 : 输入图像sr1的alpha值
参数3 : 输入图像Mat-sr2
参数4 :输入图像sr2的alpha值
参数5 :gamma值
参数6 : 输出混合图像
注意 :两张图像的大小类型一致才可以
(代码部分)
#include <opencv2/opencv.hpp>
#include <iostream>
#include <math.h>
using namespace cv;
using namespace std;
int main(int argc, char** argv)
{
Mat src1,src2;
src1 = imread("D:/picture/Namikaze Minato.jpg");
src2 = imread("D:/picture/Naruto.jpg");
if (src1.empty() || src2.empty()) //如果没有找到图片
{
printf("could not find picture.....\n");
return -1;
}
if ((src1.size() != src2.size()) || (src1.type() != src2.type()))
{
printf("these picture is not same......\n");
return -1;
}
namedWindow("input image1", CV_WINDOW_AUTOSIZE);
imshow("input image1", src1);
namedWindow("input image2", CV_WINDOW_AUTOSIZE);
imshow("input image2", src2);
double alpha = 0.3;
Mat dst;
addWeighted(src1, alpha, src2, (1.0 - alpha), 0.0, dst);
namedWindow("output image", CV_WINDOW_AUTOSIZE);
imshow("output image", dst);
waitKey(0); //等待
return 0;
}
实验效果