详解Python PIL Image.getdata()

  • Post category:Python

PIL(Python Imaging Library)是一个用于处理图像的Python库。在PIL中,getdata()是一个十分常用的函数,它可以将图像转换为一个一维的像素值序列。

1. 语法

getdata()函数的语法如下:

getdata(self, band=None)

其中,band是可选参数。如果指定了band,则只有指定通道的像素值会被输出;否则输出所有通道的像素值。

2. 示例一

下面的代码展示了如何使用getdata()函数读取一张图像的像素值,并输出前25个像素的值:

from PIL import Image

im = Image.open("example.jpg")
pixels = list(im.getdata())
print(pixels[:25])

输出的结果为:

[(10, 20, 30), (11, 21, 31), (12, 22, 32), (13, 23, 33), (14, 24, 34), (15, 25, 35), (16, 26, 36), (17, 27, 37), (18, 28, 38), (19, 29, 39), (20, 30, 40), (21, 31, 41), (22, 32, 42), (23, 33, 43), (24, 34, 44), (25, 35, 45), (26, 36, 46), (27, 37, 47), (28, 38, 48), (29, 39, 49), (30, 40, 50), (31, 41, 51), (32, 42, 52), (33, 43, 53), (34, 44, 54)]

在上面的代码中,我们首先打开了一张图像,并使用im.getdata()函数将图像转换为一个像素值序列。list函数则将序列转换为一个列表方便输出。最后,我们使用[:25]选取前25个元素进行输出。

3. 示例二

下面的代码展示了如何使用getdata()函数输出一张图像的灰度值:

from PIL import Image

im = Image.open("example.jpg").convert("L")
pixels = list(im.getdata())

print(pixels[:25])

在上面的代码中,我们首先打开了一张图像,并使用.convert("L")将图像转换为灰度图像。之后,我们使用im.getdata()函数将图像转换为一个像素值序列,并使用list函数将其转换为列表。最后,我们使用[:25]选取前25个元素进行输出。

输出的结果如下:

[17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41]

在这个示例中,我们获取到的是一个列表,其中每个元素表示该像素的灰度值。