Использование fromarray из PIL для сохранения вектора изображения из 4 каналов, а затем перечитывание его - PullRequest
0 голосов
/ 29 октября 2018

У меня есть векторное изображение v с размерами (100, 100, 4). Чтобы сохранить этот вектор изображения, я использовал PIL следующим образом.

im = Image.fromarray(v)

Вектор изображения не RGB, так как у него 4 канала. Я получил следующую ошибку.

TypeError: Cannot handle this data type

Я также получил еще несколько ошибок. Я думаю, что есть проблема с типом моего массива. Тип v векторов следующий.

print(type(v))
<class 'numpy.ndarray'>

1 Ответ

0 голосов
/ 29 октября 2018

Вы получите эту ошибку, если ваш базовый тип данных недопустим для Image.fromarray(). Так, например, он с радостью примет массив 8-разрядных целых чисел без знака:

i=np.zeros((100,100,4),dtype=np.uint8)   # specify unsigned 8-bit ints

print(i.dtype)                           # prints dtype('uint8')
im = Image.fromarray(i)                  # works fine                                                 

Теперь попробуйте с недопустимым типом:

i=np.zeros((100,100,4),dtype=np.int16) 
print(i.dtype)                           # prints dtype('int16')                                                   

im = Image.fromarray(i) 
TypeError: Cannot handle this data type

Итак, ответ таков: ваш тип данных недопустим. Проверьте это с v.dtype.

...