次のPython3コードのエラーが表示されます。 x、y、zはすべて、同じサイズでも同じサイズの普通の2D numpy配列であり、同じように動作するはずです。しかし、彼らは違った動きをしていますが、yとzはクラッシュし、xはうまくいきます。PILのfromArray関数で次元依存のAttributeErrorを引き起こす原因は何ですか?
import numpy as np
from PIL import Image
a = np.ones((3,3,3), dtype='uint8')
x = a[1,:,:]
y = a[:,1,:]
z = a[:,:,1]
imx = Image.fromarray(x) # ok
imy = Image.fromarray(y) # error
imz = Image.fromarray(z) # error
が、これは
z1 = 1*z
imz = Image.fromarray(z1) # ok
を作品にエラーがある:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "C:\Python3\lib\site-packages\PIL\Image.py", line 1918, in fromarray
obj = obj.tobytes()
AttributeError: 'numpy.ndarray' object has no attribute 'tobytes'
それでは、X、Y、Z、Z1の間で違いますの?私には分かりません。
>>> z.dtype
dtype('uint8')
>>> z1.dtype
dtype('uint8')
>>> z.shape
(3, 4)
>>> z1.shape
(3, 4)
私はWindows 7 EnterpriseマシンでPython 3.2.3を使用しています。すべて64ビットです。
Ubuntu 12.04のpython 2.7でエラーはありません。 – user545424