在本文中,我们将讨论Python OpenCV Image Blending(图像融合),如果您对使用Python编程语言进行GUI开发感兴趣,请查看这个(https://www.linuxmi.com/python)链接。

根据OpenCV文档, 图像融合也是图像叠加,但是为图像赋予了不同的权重,从而使图像具有混合或透明的感觉。根据以下等式叠加图像:

通过改变  ,您可以在一个图像到另一个图像之间执行一个很酷的转换。

在这里,我使用了两个图像,将它们融合在一起。第一幅图像的权重为0.7,第二幅图像的权重为0.3。 cv2.addWeighted() 在图像上应用以下等式。图像混合cv.addWeighted()是一种图像加权相加的操作,两幅图像的权重可以不一样,也可以一样。

下面是图像融合的完整示例

注意:这些代码是用来读取图像的,确保图像的大小和类型相同。此外,还需要在工作目录中添加图像。

img1 = cv2.imread(“linuxmi.com.jpg”)
img2 = cv2.imread(“linuxmi.jpg”)

用此方法,您可以在OpenCV中应用图像融合

dist = cv2.addWeighted(img1, 0.75, img2, 0.25,0)

运行完整的代码,这将是结果

第2种方式:通过位运算实现图像的叠加

我们如何将这个logo加到右边图片里呢?

如果使用cv.add()那么颜色肯定加深 如果使用cv.addWeight()又会出现透明, 那怎么办呢?

我们可以使用位运算,然后运用掩码的性质就可以得到了。

我们可以首先将logo的颜色空间进行转换,转换成灰度图像,然后使用阀值函数,将我们的logo提取出来,然后将其他部分变为黑色,即像素值为0。

完整代码

效果图如下:

发表评论