将大PIL图像转换为numpy数组

时间:2013-10-24 12:39:38

标签: python numpy python-imaging-library

考虑以下脚本:

from PIL import Image
import numpy as np
im = Image.new("F", (512, 512), 0.)

这导致

>>> np.asarray(im)
array([[ 0.,  0.,  0., ...,  0.,  0.,  0.],
       [ 0.,  0.,  0., ...,  0.,  0.,  0.],
       [ 0.,  0.,  0., ...,  0.,  0.,  0.],
       ..., 
       [ 0.,  0.,  0., ...,  0.,  0.,  0.],
       [ 0.,  0.,  0., ...,  0.,  0.,  0.],
       [ 0.,  0.,  0., ...,  0.,  0.,  0.]], dtype=float32)

正如我所料。但是,如果我有一个更大的图像,比如im = Image.new("F", (10240, 8600), 0.),则转换会产生一个数组,其中PIL图像是唯一的元素:

>>> np.asarray(im)
array(<PIL.Image.Image image mode=F size=10240x8600 at 0x122D8A08>, dtype=object)

这种行为是正常的吗?有解决方法吗?在Windows 7计算机上运行Python 2.7和PIL 1.1.7。在Unix上,问题不会发生。

0 个答案:

没有答案