线性混合操作
- 功能说明:addWeighted()函数是将两张相同大小,相同类型的图片融合的函数。他可以实现图片的特效
- 相关API(addWeighted)
参数1: 输入图像Mat - src1
参数2: 输入图像src1的alpha值
参数3: 输入图像Mat - src2
参数4: 输入图像src2的alpha值
参数5: gamma值
参数6:输出混合图像
注意:两张图像的大小和类型必须一致才可以
代码演示
#include<opencv2/opencv.hpp>
#include<iostream>
using namespace std;
using namespace cv;
int main(int argc,char* argv)
{
Mat src1,src2,dst;
src1 = imread("C:/Users/26444/Desktop/testopencvinstall/OIP.jpg");
src2 = imread("C:/Users/26444/Desktop/testopencvinstall/OIP2.jpg");
if(!src1.data)
{
cout << "could not load image OIP....."<< endll;
return -1;
}
if(!src2.data)
{
cout << "could not load image OIP2......"<< endl;
return -1;
}
double alpha = 0.5;
//判断2张图像的分辨率是否一样,否则会报错
if(src1.rows == src2.rows && src1.cols == src2.cols && src1.type() == src2.type())
{
//addWeighted()函数是将两张相同大小,相同类型的图片融合的函数。他可以实现图片的特效
//参数1: src1,第一个原数组
//参数2: alpha,第一个数组元素权重
//参数3: src2,第二个原数组
//参数4: 1.0 - alpha,第二个数组元素权重
//0.0 gamma值 图1与图2作后添加的数值。不要太大,不然图片一片白。总和等于255以上就是一片白了
//参数6: dst,输出图片
addWeigthed(src1,alpha,src2,(1 - alpha),0.0,dst);
//multiply(src1,src2,dst,1.0);
imshow("OIP",src1);
imshow("OIP2",src2);
namedWindow("blend demo",WINDOW_AUTOSIZE);
imshow("blend demo",dst);
}
else
{
printf("could not blend image,the size of images is not same....\n");
return -1
}
waitKey(0);
return 0;
}