图像合并是在大小和属性相同的图像进行合并,进而组成一张新的像素图,像最近比较火的带有国旗属性的图像。此次使用到的是CV2函数的下的addWeighted函数。首先我们先了解一下函数的原型
cv2.addWeighted(src1,alpha,src2,beta,gamma,dst,,dtype) #两张对应输入的图像与其对那个的权重相乘
首先我们在选用图片可以不用考虑其大小,CV2库里的resize函数可以帮我们调整图像大小并不会改变图像其本身的质量。具体调用如下
img_size1=cv2.resize(img1,(600,600));#保持大小一致
img_size2=cv2.resize(img2,(600,600));
接下来就是核心部分,opencv中给我们以C代码实现,这里可以直接使用resize函数就可以。
dst=cv2.addWeighted(img_size1,0.7,img_size2,0.3,0);#国旗作为底色可以将第二张图像的权重值相对小一些
合成后的效果图
addWeighted函数可以用合并Sobel算子沿 X Y 135° 45°这四个方向计算后图像的近似梯度,从而得到图像的近似边缘,在上一篇博文中提到过图像目标检测,检测图像二值化后图像的阀值检测,其阴影可能会影响其真实的边缘,通过Sobel算子来检测图像的边缘,并用cv2.drawContours()
绘制边缘
以X Y方向的梯度与图像卷积,卷积后我们也可以通过addweighted函进行合并。
image_S=cv2.addWeighted(Grad_x, 0.5, Grad_y, 0.5, 0,)