Numpy如何使用PIL paste和mask

Numpy如何使用PIL paste和mask

在本文中,我们将介绍如何使用Numpy和PIL(Python Imaging Library)来合并图像,并使用掩模来实现自定义形状的合并。

阅读更多:Numpy 教程

PIL paste方法

PIL提供了一个名为 paste() 的方法,它可以将一个图像放在另一个图像上。此方法有以下参数:

paste(im, box=None, mask=None)
Python
  • im 是要合并的图像。
  • box 是合并图像的位置和大小。
  • mask 是一个可选的作为alpha通道的二进制掩模。

使用 paste() 方法时,图像将覆盖在其他图像的位置上。

例如,以下示例演示了如何使用paste()方法将一张图像合并到另一张图像上:

from PIL import Image

# 打开两张图像
im1 = Image.open("image1.jpg")
im2 = Image.open("image2.jpg")

# 将im2放在im1的(100,100)处
im1.paste(im2, (100, 100))

im1.show()
Python

这会将 image2.jpg放在 image1.jpg(100,100)位置处。

PIL mask方法

PIL还提供了一个名为 mask() 的方法,此方法可以使用二元掩码创建图像的alpha通道。这意味着黑色区域将完全透明,白色区域将完全不透明。

以下是如何使用 mask() 方法创建一个简单的掩码图像的示例:

from PIL import Image, ImageDraw

# 创建一个新的图像和可绘制对象
mask = Image.new("L", (200, 200), 0)
draw = ImageDraw.Draw(mask)

# 绘制一个圆
draw.ellipse((50, 50, 150, 150), fill=255)

mask.show()
Python

这个代码将创建一个大小为 200x200 的黑色掩码图像,上面绘制了一个白色圆圈。掩码使用L模式创建,表示灰度图像。在此示例中,圆是白色,因此在掩码中为255,表示完全不透明。

使用掩码合并图像

现在我们可以使用mask参数将两个图像合并在一起,并使其中一个图像仅在掩码区域内可见。以下是如何实现此目的的示例:

from PIL import Image

# 打开两张图像
im1 = Image.open("image1.jpg")
im2 = Image.open("image2.jpg")

# 创建mask图像
mask = Image.new("L", im2.size, 0)
mask.paste(im2, (0,0))

# 合并图像
im1.paste(im2, mask=mask)

im1.show()
Python

在这个例子中,我们使用paste()方法将 im2 放在大小相同的掩码图像上。然后,掩码被传递给paste()方法,表示将掩码用作alpha通道。

在这种情况下, im1 图像完全覆盖了 im2 ,除了在掩码中,部分图像是可见的。

总结

以上是如何使用Numpy和PIL paste和mask合并图像的方法。现在,您可以使用这些工具实现自定义合并形状,并创建您想要的效果。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

登录

注册