这里的图像叠加指线性叠加,设图像A的像素为fA(x),图像B的像素为fB(x),叠加系数为α,则线性叠加操作为:
α为0-1之间的值,从上面也可以看出,叠加必需保证两幅输入图像的尺寸大小相同。
void addWeight(InputArray src1,double alpha,InputArray src2,double beta,double gamma,OutputArray dst,int dtype = -1);
#include"stdafx.h"
#include<iostream>
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc/imgproc.hpp>
using namespace cv;
using namespace std;
bool LinearBlending();
int main(void)
{
// 调用
bool linearblending = LinearBlending();
cout << linearblending << endl;
waitKey(0);
return(0);
}
bool LinearBlending() {
// 定义局部变量
double alphaValue = 0.6;
double betaValue;
// 读取图片,两个图片大小尺寸必须一样
Mat src1, src2, dst;
src1 = imread("E:\\pictures\\For_Project\\New_opencv\\newstar.jpg");
src2 = imread("E:\\pictures\\For_Project\\New_opencv\\newgo.jpg");
// 图像混合加权操作
betaValue = 1.0 - alphaValue;
addWeighted(src1, alphaValue, src2, betaValue, 0.6, dst);
namedWindow("原图1");
imshow("原图1", src1);
namedWindow("原图2");
imshow("原图2", src2);
namedWindow("效果");
imshow("效果", dst);
return true;
}
效果: