Создание изображения с PIL `Image.fromarray` приводит к AttributeError: у объекта 'list' нет атрибута '__array_interface__' - PullRequest
0 голосов
/ 29 декабря 2018

Я хотел отобразить изображение из массива 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')

Ответы [ 2 ]

0 голосов
/ 29 декабря 2018

Ваш способ создания массива numy неверен.Лучше создайте его как:

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')

Это будет работать.

0 голосов
/ 29 декабря 2018

Проблема в том, что вы не создаете пустой массив:

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

, когда вы делаете это, arry становится списком списков, отсюда ошибка:

AttributeError: у объекта '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')

Обратите внимание, что выше указано dtype из arry будет np.uint8.

...