考虑以下脚本:
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 上不会发生此问题。