Python Pillow - ImageChops.screen() 函数



Python 图像处理库 Pillow (PIL) 的 ImageChops 模块提供了一系列函数,用于对图像执行算术运算。除了这些运算之外,该模块还提供专门为图像混合模式运算设计的函数。这些混合模式之一就是屏幕模式。

PIL 中的 ImageChops.screen 函数使用屏幕混合模式将两张反转的图像叠加在一起。

该运算定义如下:

$$\mathrm{out\:=\:MAX\:-\:((MAX\:-\:image1)\:*\:(MAX\:-\:image2)\:/\:MAX)}$$

语法

以下是该函数的语法:

PIL.ImageChops.screen(image1, image2)

参数

以下是此函数参数的详细信息:

  • image1 - 第一个模式为“1”的输入二值图像。

  • image2 - 第二个模式为“1”的输入二值图像。

返回值

此函数的返回类型为 Image。

示例

示例 1

这是另一个示例,演示了 ImageChops.screen() 函数将两张反转的图像叠加在一起的工作方式。

from PIL import Image, ImageChops
import numpy as np

# Create the two input images using numpy arrays
array1 = np.array([(154, 64, 3), (255, 0, 0), (255, 255, 0), (255, 255, 255), (164, 0, 3)], dtype=np.uint8)
array2 = np.array([(200, 14, 3), (20, 222, 0), (255, 155, 0), (255, 55, 100), (180, 0, 78)], dtype=np.uint8)

image1 = Image.fromarray(array1)
image2 = Image.fromarray(array2)

# Display the pixel values of the two input images
print("Pixel values of image1 at (0, 0):", image1.getpixel((0, 0)))
print("Pixel values of image2 at (0, 0):", image2.getpixel((0, 0)))

# Additionally, demonstrate the use of the screen blend mode
result_screen = ImageChops.screen(image1, image2)

# Display the pixel values of the resulting image at (0, 0) after screen blend mode
print("Pixel values of the result at (0, 0) after screen blend mode:", result_screen.getpixel((0, 0)))

输出

Pixel values of image1 at (0, 0): 154
Pixel values of image2 at (0, 0): 200
Pixel values of the result at (0, 0) after screen blend mode: 234

示例 2

在此示例中,PIL.ImageChops.screen() 函数应用于两张 PNG 图像,以将两张反转的图像叠加在一起。

from PIL import Image, ImageChops

# Open the two image files
image1 = Image.open("Images/pillow-logo-w.png")
image2 = Image.open("Images/ColorDots.png")

# Apply the Screen algorithm
result = ImageChops.screen(image1, image2)

# Display the input and resulting images
image1.show()
image2.show()
result.show()

输出

输入图像 1

pillow logo w

输入图像 2

color dots

输出图像

imagechops screen

示例 3

这是另一个示例,它将 PIL.ImageChops.overlay() 函数应用于两张 JPEG 图像。

from PIL import Image, ImageChops

# Open the two image files
image1 = Image.open("Images/Tajmahal_2.jpg")
image2 = Image.open("Images/Flower1.jpg")

# Apply the Screen algorithm
result = ImageChops.screen(image1, image2)

# Display the input and resulting images
image1.show()
image2.show()
result.show()

输出

输入图像 1

tajmahal birds

输入图像 2

flower

输出图像

chops screen
python_pillow_function_reference.htm
广告