将大PIL图像转换为numpy数组

jot*_*ken 6 python numpy python-imaging-library

请考虑以下脚本:

from PIL import Image
import numpy as np
im = Image.new("F", (512, 512), 0.)
Run Code Online (Sandbox Code Playgroud)

这导致了

>>> 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)
Run Code Online (Sandbox Code Playgroud)

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

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

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