第六课图像混合
线性混合操作
两边相加其实是两个图像的每一个像素进行相加,每个像素都进行上述公式的操作就,可以将两个图像进行混合随着x的变化而全部都进行变化。
相关的API(addWeighted)
void cv::addWeighted(
inputArray src1, //参数1:输入图像Mat-src1
double alpha, //参数2:输入图像src1的alpha值
InputArray src2, //参数3:输入图像Mat-src2
double beta, //参数4:输入图像src2的alpha值
double gamma, //参数5:gamma值
OutputArray dst, //参数6: 混合输出图像
int dtype=-1)
注:两张图像的大小必须和类型一直才可以
参数1和3含义:表示输入的两张源图像
参数2的含义:给予一个权重的参数,范围为0-1之间这是src1的权重值
参数4的含义:这是src2的权重值,范围为0-1之间
参数5的含义:这是一个校验值,如果输出的混合图像过暗,就会用校验值提升亮度
参数6的含义:输出的图像
saturate()
saturate()的函数意思是确保里边的值不会超出0-255的范围区间
如果直接使用
void add(src1,src2,dst,Mat()),
生成出来的图片将会特别的生硬(这是因为没有添加权重去进行图像的调整)
.
.
如果使用
void multiply(src1,src2,dst,1.0);
这个函数时是将两个图像进行相乘,这会造成亮的更亮生成出来的图像几乎不能使用