- 线性混合操作
h(x) = (1-a)f(x) + ag(x) 0<a<1 - cv::addWeighted
参数1:输入图像src1
参数2:输入图像src1的alpha值
参数3:输入图像src2
参数4:输入图像src2的alpha值
参数5:gamma值//offset added to weighted sum
参数6:输出混合图像
参数7:dtype=-1 //out type for result array
#include <opencv2/opencv.hpp>
#include <iostream>
using namespace std;
using namespace cv;
int main(int argc, char** argv)
{
// 加载图像
Mat src1, src2, dst;
src1 = imread("../apple.jpg");
src2 = imread("../baboon.jpg");
if (src1.empty())
{
cout << "could not load image1..." << endl;
return -1;
}
if (src2.empty())
{
cout << "could not load image2..." << endl;
return -2;
}
if (src1.rows == src2.rows && src1.cols == src2.cols) //判断src1与src2尺寸是否相同
{
double alpha = 0.5;
addWeighted(src1, alpha, src2, (1-alpha), 0.0 ,dst ,-1); //混合函数 //gamma值为0.0,表示一个作用到加权和后的图像上的标量
}
else {
printf("image size is not same...\n");
return -3;
}
// 显示图像
namedWindow("saturate", WINDOW_AUTOSIZE);
imshow("saturate", dst);
waitKey(0);
return 0;
}
src1与src2来源:opencv安装目录下的sources\samples\data
src1为:
src2为:
输出结果: