次のスクリプトを検討してください。
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 では問題は発生しません。