概念
图像混合为线性混合运算,理论公式如下:
f0(x):表示图像1的像素值
f1(x):表示图像2的像素值
α0:表示两个图像的权重参数。值区间0-1;
opencv函数支持cv::addWeighted()
函数原型
CV_EXPORTS_W void addWeighted(InputArray src1, double alpha, InputArray src2,
double beta, double gamma, OutputArray dst, int dtype = -1);
参数多了一个gamma:表示在最终的结果图中加上的偏移量。
代码示例
代码如下(示例):
cv::Mat src1;
src1 = cv::imread("D:\\QtProject\\Opencv_Example\\addWeighted\\addWeighted1.png", cv::IMREAD_COLOR);
if (src1.empty()) {
cout << "Cannot load image" << endl;
return;
}
cv::Mat src2;
src2 = cv::imread("D:\\QtProject\\Opencv_Example\\addWeighted\\addWeighted2.png", cv::IMREAD_COLOR);
if (src2.empty()) {
cout << "Cannot load image" << endl;
return;
}
cv::Mat dst;
cv::addWeighted(src1, 0.5, src2, 0.5, 0, dst);
效果:
图1
图2
混合之后: