将PIL图像转换为numpy数组

时间:2014-05-19 18:44:44

标签: python numpy python-imaging-library

我想将PIL图像转换为numpy数组。 Numpy的asarray函数只是将图像放在一个0维数组中。

(Pdb) p img
<PIL.Image._ImageCrop image mode=RGB size=1024x0 at 0x106953560>
(Pdb) img.getdata()
<ImagingCore object at 0x104c97b10>
(Pdb) np.asarray(img.getdata())
array([], dtype=float64)
(Pdb) np.asarray(img)
array(<PIL.Image._ImageCrop image mode=RGB size=1024x0 at 0x106953560>, dtype=object)
(Pdb) np.asarray(img).shape
()
(Pdb) np.asarray(img, np.uint8)
*** SystemError: error return without exception set

similar SO question上的解决方案不起作用。

1 个答案:

答案 0 :(得分:5)

您的img大小为1024x0:

  

PIL.Image._ImageCrop图像模式= RGB尺寸= 1024x0 位于0x106953560

这是一张0高的图像。因此,结果NumPy数组为空。要进行修复,请裁剪图像,使其具有正宽度和高度。