【OpenCV基础】第六课:图像混合

线性混合操作,addWeighted,add,multiply

Posted by x-jeff on November 12, 2019

本文为原创文章,未经本人允许,禁止转载。转载请注明出处。

1.线性混合操作

$g(x)=(1-\alpha)f_0(x)+\alpha f_1(x)$

其中$\alpha$的取值范围为0~1之间。

2.addWeighted

OpenCV中实现图像混合功能的API:

1
2
3
4
5
6
7
8
9
void cv::addWeighted(
	inputArray src1,//参数1:输入图像Mat-src1
	double alpha,//参数2:输入图像src1的alpha值
	inputArray src2,//参数3:输入图像Mat-src2
	double beta,//参数4:输入图像src2的beta值
	double gamma,//参数5:gamma值
	OutputArray dst,//参数6:输出混合图像
	int dtype=-1//参数7:位图深度,-1表示和原图一样
	)

⚠️两张图像的大小和类型必须一致才可以。

上述API的功能就相当于:dst(I)=saturate(src1(I)*alpha+src2(I)*beta+gamma),gamma用于调节混合图像的亮度值(或像素值)。

3.add、multiply

图像src1和图像src2大小和类型均一样,则两幅图像对应像素点的像素值相加得到混合后的新图像dst:add(src1,src2,dst)

图像src1和图像src2大小和类型均一样,则两幅图像对应像素点的像素值相乘得到混合后的新图像dst:multiply(src1,src2,dst)

4.代码地址

  1. 图像混合