图像混合addWeighted()
openCV的addWeighted()
原理
openCV的图像混合操作使用的是线性混合操作
这个函数的数学公式是
其中a的取值范围是0~1之间
void cv::addWeighted(InputArray src1,double alpha,InputArray src2,double beta, double gamma, OuputArray dst, int dtypt= -1)
- 参数1:输入图像Mat -src1
- 参数2:输入图像src1的alpha值
- 参数3:输入图像Mat-src2
- 参数4:输入图像src2的alpha值
- 参数5:gamma值
- 参数6:输出混合图像
注意:两张图像的大小和类型必须一致
代码示例
#include<opencv2/opencv.hpp>
#include<iostream>
using namespace cv;
using namespace std;
int main()
{
Mat src1= imread("C:\\Users\\27507\\Desktop\\1.png");
Mat src2 = imread("C:\\Users\\27507\\Desktop\\2.png");
Mat dst;
//int height, width;
获取图片的宽度和高度
//height = a.rows;
//width = a.cols;
//for (int row = 0; row < height; row++)
//{
// for (int col = 0; col < width; col++)
// {
// int b = a.at<Vec3b>(row, col)[0];
// int g = a.at<Vec3b>(row, col)[1];
// int r = a.at<Vec3b>(row, col)[2];
// cout << b << " " << g << " " << r<<" ";
// }
//}
addWeighted(src1, 0.5, src2, 0.5, 0.0,dst);
//namedWindow("output", WINDOW_AUTOSIZE);
imshow("src1", src1);
imshow("src2", src2);
imshow("dst", dst);
waitKey(0);
return 0;
}