Python Pillow - ImageChops.subtract() 函数



PIL.ImageChops.subtract() 函数用于从一个图像 (image1) 中减去另一个图像 (image2)。减法完成后,结果将除以指定的比例,然后添加一个偏移量。此操作的数学表示由以下公式给出:

$$\mathrm{out\:=\:((image1\:-\:image2)/scale\:+\:offset)}$$

与 ImageChops.add 类似,由于数据类型为 uint8,因此此操作不可逆。使用 ImageChops.subtract 时,如果结果值为负,则将其剪裁为零。这种剪裁到 [0, 255] 范围会导致数据丢失,并且无法从结果中准确地重建原始图像。

语法

以下是函数的语法:

PIL.ImageChops.subtract(image1, image2, scale=1.0, offset=0)

参数

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

  • image1 - 这是第一个输入图像。

  • image2 - 这是第二个输入图像。

  • scale(可选,默认值:1.0) - scale 是将 image1 和 image2 相减的结果除以的因子。如果省略此参数,则默认为 1.0。

  • offset(可选,默认值:0.0) - offset 是在除以 scale 后添加到结果的值。如果不提供偏移值,则默认为 0.0。

返回值

此函数返回 Image 对象。

示例

示例 1

在此示例中,使用 NumPy 数组创建了两个随机的 RGB 图像(image1 和 image2)。然后应用 ImageChops.subtract 函数以查看在执行减法后两个图像的像素值如何在输出图像中表示。

from PIL import Image, ImageChops
import numpy as np

# Create two random RGB images
image1 = Image.fromarray(np.array([(235, 64, 3), (255, 0, 0), (255, 255, 0), (255, 255, 255), (164, 0, 3)]), mode="RGB")
print("Pixel values of image1 at (0, 0):", image1.getpixel((0, 0)))

image2 = Image.fromarray(np.array([(255, 14, 3), (25, 222, 0), (255, 155, 0), (255, 55, 100), (180, 0, 78)]), mode="RGB")
print("Pixel values of image2 at (0, 0):", image2.getpixel((0, 0)))

# Subtract the two images
result = ImageChops.subtract(image1, image2)
print("Pixel values of the result at (0, 0) after subtraction:", result.getpixel((0, 0)))

输出

Pixel values of image1 at (0, 0): (235, 0, 0)
Pixel values of image2 at (0, 0): (255, 0, 0)
Pixel values of the result at (0, 0) after subtraction: (0, 0, 0)

我们可以观察到输出,(0, 0) 处的像素为 (0, 0, 0),因为减法 (235 - 255) 被剪裁为 0。

示例 2

以下示例使用默认参数 (scale=1.0, offset=0.0) 从第一个图像中减去第二个图像。

from PIL import Image, ImageChops

# Open two image files
image1 = Image.open('Images/TP logo.jpg')
image2 = Image.open('Images/Rose_.jpg')

# Subtract the second image from the first with default parameters (scale=1.0, offset=0.0)
result = ImageChops.subtract(image1, image2)

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

输出

输入图像 1

tp logo

输入图像 2

rose

输出图像

imagechops subtract

示例 3

这是一个示例,它使用特定的 scale 和 offset 值从第一个图像中减去第二个图像。

from PIL import Image, ImageChops

# Open two image files
image1 = Image.open('Images/Rose_.jpg')
image2 = Image.open('Images/TP logo.jpg')

# Subtract the second image from the first with specific scale and offset values
result = ImageChops.subtract(image1, image2, scale=5.0, offset=100)

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

输出

输入图像 1

rose

输入图像 2

tp logo

输出图像

chops subtract
python_pillow_function_reference.htm
广告