详解Python PIL ImageOps.grayscale()方法

  • Post category:Python

Python PIL库中的ImageOps.grayscale()方法

ImageOps模块提供了一系列图像操作方法,实现了对图像的基本操作,例如旋转、缩放和转换等。ImageOps.grayscale()方法是其中的一个方法,它可以将输入的彩色图像转换为灰度图像。

方法参数

ImageOps.grayscale()方法有一个必需的参数,即输入图像。该参数可以是PIL.Image.Image对象或文件名。并且,该方法还支持两个可选参数:

  • inverter:是否对转换后的灰度图像进行反转。如果设置为True,则亮度低的像素将变为白色。否则,这些像素将变为黑色。
  • dither:如果设置为True,则在转换过程中使用离散化处理,以减少颜色数量。默认值为False

方法返回值

ImageOps.grayscale()方法的返回值是一个灰度化的图像(PIL.Image.Image 对象),该图像的通道数为1,表示图像颜色只有灰度值。

方法示例

下面是两个示例,介绍如何使用Python PIL库中的ImageOps.grayscale()方法

示例1. 使用示例图片灰度化

from PIL import Image, ImageOps

# 打开一张彩色图片
img = Image.open('example.jpg')

# 调用ImageOps.grayscale()方法进行灰度化
gray_img = ImageOps.grayscale(img)

# 显示灰度化后的图像
gray_img.show()

在上述示例中,我们首先打开了一张彩色图片,然后调用ImageOps.grayscale()方法将其灰度化。最后,我们将灰度化后的图像显示出来。

示例2. 对一批图片进行灰度化

from PIL import Image, ImageOps
import os

# 定义图片路径和输出路径
img_path = './images'
out_path = './gray_images'

# 如果输出路径不存在,创建输出路径
if not os.path.exists(out_path):
    os.makedirs(out_path)

# 遍历图片目录
for file_name in os.listdir(img_path):

    # 如果文件是图片,处理该文件
    if file_name.endswith('.jpg'):

        # 打开图片并灰度化
        img = Image.open(os.path.join(img_path, file_name))
        gray_img = ImageOps.grayscale(img)

        # 保存灰度化后的图像
        gray_img.save(os.path.join(out_path, file_name))

在上述示例中,我们首先定义了需要灰度化的图片路径和输出路径。然后,我们遍历了该图片路径下的所有图片,对每个图片进行灰度化,并将灰度化后的图像保存到输出路径中。