如何将RGB PIL图像转换为3个通道的numpy数组?

时间:2017-07-06 17:40:47

标签: python numpy python-imaging-library rgb

我正在使用以下代码加载图片

image = PIL.Image.open(file_path)
image = np.array(image)

它可以工作,但是数组的大小似乎是(X, X, 4),即它有4层。我想要普通的RGB图层。有可能吗?

更新

我发现仅删除第4个频道效率不高。需要以下代码:

image = PIL.Image.open(file_path)
image.thumbnail(resample_size)
image = image.convert("RGB")
image = np.asarray(image, dtype=np.float32) / 255
image = image[:, :, :3]

为什么?

1 个答案:

答案 0 :(得分:9)

第四层是支持透明度的图像格式的透明度值,如PNG。如果删除第4个值,它将是没有透明度的正确RGB图像。

修改

示例:

>>> import PIL.Image
>>> image = PIL.Image.open('../test.png')
>>> import numpy as np
>>> image = np.array(image)
>>> image.shape
(381, 538, 4)
>>> image[...,:3].shape
(381, 538, 3)