python图片叠加:如何将图像叠加在另一个图像上?

2021年11月7日19:42:40 发表评论 4,944 次浏览

python如何叠加图片?将一幅图像覆盖在另一幅图像上是指将一幅图像的图像数据复制到另一幅图像上的过程。如何将图像叠加在另一个图像上?叠加也可以指其他类型的图像处理方法,例如叠加相似的图像以进行降噪、混合等。但现在,我们将专注于前一种。在本文中,我们将学习如何使用图像处理将一个图像叠加在另一个图像之上。

python图片叠加所需模块:

pillow: Python图像库(PIL的膨胀)是事实上的图像处理包的Python语言。它集成了编辑,创建轻量级图像处理工具,并保存图像。

pip install pillow

用于 演示目的,我们将使用下面的图像作为主图像。

python图片叠加:如何将图像叠加在另一个图像上?

示例 1:覆盖 alpha 图像。

如果我们将包含透明区域的图像叠加在不透明图像上,那么最终图像中只会出现叠加图像的不透明区域。像素可能不是完全不透明的,因此可能具有模拟不透明度(alpha 通道)。这种类型的叠加是主要的,因为它允许无缝混合图像。

python如何叠加图片?为了覆盖图像,我们将使用pillow库中的 paste()函数。

语法: paste(self, im, box=None, mask=None)

   将另一个图像粘贴到该图像中。

参数:

  • im:源图像或像素值(整数或元组)。
  • box:一个可选的 4 元组,给出要粘贴到的区域。如果改为使用 2 元组,则将其视为左上角。如果省略或无,则将源粘贴到左上角。
  • mask:可选的掩码图像。

为了演示,我们将覆盖以下图像:

python图片叠加:如何将图像叠加在另一个图像上?

如何将图像叠加在另一个图像上下面是代码实现:

from PIL import Image
  
# Opening the primary image (used in background)
img1 = Image.open(r"BACKGROUND_IMAGE_PATH")
  
# Opening the secondary image (overlay image)
img2 = Image.open(r"OVERLAY_IMAGE_PATH")
  
# Pasting img2 image on top of img1 
# starting at coordinates (0, 0)
img1.paste(img2, (0,0), mask = img2)
  
# Displaying the image
img1.show()

输出:

python图片叠加:如何将图像叠加在另一个图像上?

解释:

python图片叠加:首先我们打开主图像并将其图像对象保存到变量 img1 中。然后我们打开将用作叠加层的图像并将其图像对象保存到变量 img2 中。然后我们调用 paste 方法在 img1上覆盖/粘贴传递的图像。第一个参数是 img2,它是包含透明文本的图像的图像对象。此图像将用于叠加。第二个参数是一个大小为2元组表示的坐标 IMG1,其中 IMG2应粘贴。由于它是 (0, 0),因此第二个图像将粘贴在 img1 的左上角。第三个参数是 img2传递给掩码参数。它将为 img2指定透明度蒙版。最后我们展示了图像。

示例 2:覆盖非 alpha 图像

python如何叠加图片?如果我们将完全不透明的图像叠加在不透明图像的顶部,则叠加图像的所有像素值都会保留在最终图像中。在此过程中,背景图像的像素值会在此过程中丢失(在覆盖图像占据的区域)。

我们将使用以下图像作为叠加图像:

python图片叠加:如何将图像叠加在另一个图像上?

下面是实现:

from PIL import Image
  
img1 = Image.open(r"BACKGROUND_IMAGE_PATH")
img2 = Image.open(r"OVERLAY_IMAGE_PATH")
  
# No transparency mask specified, 
# simulating an raster overlay
img1.paste(img2, (0,0))
  
img1.show()

输出:

python图片叠加:如何将图像叠加在另一个图像上?

python图片叠加解释:

如何将图像叠加在另一个图像上?代码与前一个大致相同,因此我们只对更改后的代码感兴趣。在 paste 方法调用中,我们省略了 mask 参数,这允许没有透明掩码用于覆盖。因此,图像只是简单地复制粘贴到 img1 上。由于 img2的像素值按原样复制,因此输出图像中也存在白色背景。它为查看者提供了一个线索,即由于最终图像中发现突然的颜色变化(当叠加图像包含透明区域时,这种情况会得到缓解),因此在没有过多考虑最终图像质量的情况下修改了图像。

木子山

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: