使用 PIL `Image.fromarray` 创建图像会导致 AttributeError: 'list' object has no attribute '__array_interface__'

问题描述 投票:0回答:3

我想显示 NumPy 数组中的图像,但出现此错误:

Traceback (most recent call last):
  File "E:/wittos/python/SVM/witti svm/arraytoimage.py", line 14, in <module>
   image = Image.fromarray(arry)
  File "C:\Users\MOHAMED-WITTI-ADOU\AppData\Local\Programs\Python\Python35\lib\site-packages\PIL\Image.py", line 2483, in fromarray
    arr = obj.__array_interface__
AttributeError: 'list' object has no attribute '__array_interface__'

我希望你能帮我解决这个错误。

import numpy as np
from PIL import Image

# Create a NumPy array
arry = np.array([3,3])
arry= [[25,25,25],[0,0,0],[0,0,0]]

# Create a PIL image from the NumPy array
image = Image.fromarray(arry)

# Save the image
image.save('image.jpg')
python numpy python-imaging-library
3个回答
5
投票

您创建 numpy 数组的方式是错误的。你应该将其创建为:

arry = np.array([[25,25,25],[0,0,0],[0,0,0]])

然后就可以了。因为,您正在覆盖用普通数组创建的空 numpy 数组。

import numpy as np
from PIL import Image

# Create a NumPy array
arry = np.array([[25,25,25],[0,0,0],[0,0,0]])

# Create a PIL image from the NumPy array
image = Image.fromarray(arry.astype('uint8'))

# Save the image
image.save('image.jpg')

这会起作用。


2
投票

问题是您没有创建 numpy 数组:

# Create a NumPy array
arry = np.array([3,3])
arry= [[25,25,25],[0,0,0],[0,0,0]]

当你这样做时,

arry
变成了列表的list,因此出现错误:

属性错误:“列表”对象没有属性“array_interface”

你应该这样做:

import numpy as np
from PIL import Image

# Create a NumPy array
arry = np.array([[25, 25, 25], [0, 0, 0], [0, 0, 0]], dtype=np.uint8)

# Create a PIL image from the NumPy array
image = Image.fromarray(arry)

# Save the image
image.save('image.jpg')

请注意,上面指定 arry

dtype
为 np.uint8。


0
投票

可以添加验证数据是否为None的功能 喜欢:

从 NumPy 数组创建 PIL 图像

图像 = Image.fromarray(arry)

if image is None:
    pass
© www.soinside.com 2019 - 2024. All rights reserved.