首页 > 解决方案 > 如何将 PIL 图像转换为 numpy 数组?

问题描述

当我执行 np.asarray(my_img) 或 array(my_img).shape 时,它​​会在 jpg 图像上返回 (2412L, 3600L, 3L),但我只想要一个 2D (2412L, 3600L) 数组,那么如何正确转换它?提前致谢。

my_image = "AI.jpg"

from matplotlib.pyplot import imread
from PIL import Image

fname = "images/" + my_image
image = Image.open(fname) 
print(image.size)    # output: (3600, 2412)
print(np.asarray(image).shape) # output: (2412L, 3600L, 3L)
print(np.array(image).shape) # output: (2412L, 3600L, 3L)

标签: pythonnumpydeep-learningpython-imaging-library

解决方案


如果您的图像尺寸具有3最终轴,这通常意味着您有一个 3 通道 RGB 图像。

如果你想要一个单通道图像,你将失去 RGB 颜色,只有一个灰度图像。你可以这样做:

grey = Image.open(fname).convert('L')

推荐阅读