我收到了以下Python3代碼中的錯誤,在指示的行中。 x,y和z都是普通的二維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企業機器上使用Python 3.2.3,所有內容都是64位。
在Ubuntu 12.04與Python 2.7無誤差。 – user545424