Python Pillow - ImageOps.autocontrast() 函数



PIL.ImageOps.autocontrast 函数旨在最大化(标准化)图像的对比度。它通过计算输入图像(或指定的掩码区域)的直方图,从直方图中去除指定百分比(cutoff)的最亮和最暗像素,然后重新映射图像,使最暗像素变为黑色(0),最亮像素变为白色(255)来实现这一点。

语法

以下是该函数的语法:

PIL.ImageOps.autocontrast(image, cutoff=0, ignore=None, mask=None, preserve_tone=False)

参数

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

  • image - 要处理的输入图像。

  • cutoff - 从直方图的低端和高端切除的百分比。它可以是 (low, high) 的元组,也可以是两端的单个数字。

  • ignore - 背景像素值;对于无背景,使用 None。

  • mask - 如果提供,则用于对比度操作的直方图将使用指定掩码内的像素计算。如果没有给出掩码,则整个图像将用于直方图计算。

  • preserve_tone - 版本 8.2.0 中引入的可选参数。当设置为 True 时,它以类似 Photoshop 的方式自动对比度来保留图像色调。

返回值

该函数返回一个表示自动对比度操作结果的图像。

示例

示例 1

以下是如何使用带有默认参数的 autocontrast 函数的示例。

from PIL import Image, ImageOps

# Open an image
original_image = Image.open("Images/image.jpg")

# Apply autocontrast with default parameters
result_image = ImageOps.autocontrast(original_image)

# Display the input and resulting images
original_image.show()
result_image.show()

输出

输入图像

waterfall

输出图像

imageops autocontrast

示例 2

在此示例中,我们设置了一个自定义截止百分比 (5%) 并指定一个在自动对比度操作期间要忽略的背景像素值。

from PIL import Image, ImageOps

# Open an image
original_image = Image.open("Images/image.jpg")

# Cut off 5% from both low and high ends of the histogram
cutoff_percentage = 5

# Ignore pixels with value 50 as background
ignore_pixel_value = 50 

# Apply autocontrast with custom parameters
result_image = ImageOps.autocontrast(original_image, cutoff=cutoff_percentage, ignore=ignore_pixel_value)

# Display the input and resulting images
original_image.show()
result_image.show()

输出

输入图像

waterfall

输出图像

ops autocontrast

示例 3

以下是如何使用 PIL.ImageOps.autocontrast 和掩码的另一个示例。我们创建一个圆形掩码并将其应用于 autocontrast 函数。

from PIL import Image, ImageOps

# Open an image
original_image = Image.open("Images/image.jpg")

# Create a mask (an example using a circular mask)
mask_radius = 100
mask = Image.new("L", original_image.size, 0)

mask.paste(255, (original_image.width // 2 - mask_radius, original_image.height // 2 - mask_radius),
   Image.new("L", (mask_radius * 2, mask_radius * 2), 255))

# Apply autocontrast with a mask
result_image = ImageOps.autocontrast(original_image, mask=mask)

# Display the input and resulting images
original_image.show()
result_image.show()

输出

输入图像

waterfall

输出图像

ops autocontrast image
python_pillow_function_reference.htm
广告