对图片进行线性混合就是将两张图片叠加在一起,而这种叠加成果是有规定的,符合一个方程式:
是第一个图片的像素,alpha为其权重,是第二个图片的像素,beta为其权重,b=1-a,若gamma不为0,则f总为+gamma。在opencv中可以通过 addWeighted()函数来实现此操作,具体的操作代码如下:
//定义|申明图片矩阵
Mat src_img1 = imread ("E:\\star.jpg");
Mat src_img2 = imread ("E:\\desk.jpg");
Mat dst_img;
//检测是否导入图片
if(!src_img1.data || !src_img2.data) return -1;
//进行线性混合
//addWeighted( src1, alpha, src2, beta, gamma, dst)
//sec1:源图片1
//alpha:图片1的权重
//src2:源图片2
//beta:图片2的权重
//gamma:权重总和再加的量
addWeighted (src_img1,0.5,src_img2,0.5,0.0,dst_img);
//显示图片
imshow ("out1",src_img1);
imshow ("out2",src_img2);
imshow ("out3",dst_img);
waitKey ();
成果: