Ошибка типа: не удается обработать этот тип данных: (1, 1, 3), - PullRequest
0 голосов
/ 09 февраля 2020

temp_image - (600, 600, 3) со значениями в диапазоне от 0 до 1.

def pro_process(temp_img, input_size):
    img = np.asarray(temp_img).astype('float32')
    img = np.array(Image.fromarray(img).resize((input_size, input_size)).convert(3))
    return img

Это дает следующую ошибку:

Traceback (most recent call last):
  File "S:\Program Files\Python36\lib\site-packages\PIL\Image.py", line 2681, in fromarray
    mode, rawmode = _fromarray_typemap[typekey]
KeyError: ((1, 1, 3), '<f4')

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "H:\OneDrive\synchronization code\Developing collection\Python\MNet_DeepCDR-master\mnet_deep_cdr_ide\run\Step_3_MNet_test.py", line 56, in <module>
    temp_img = pro_process(Disc_flat, CDRSeg_size)
  File "S:\Program Files\Python36\lib\site-packages\mnet_deep_cdr\mnet_utils.py", line 18, in pro_process
    img = np.array(Image.fromarray(img).resize((input_size, input_size)).convert(3))
  File "S:\Program Files\Python36\lib\site-packages\PIL\Image.py", line 2683, in fromarray
    raise TypeError("Cannot handle this data type: %s, %s" % typekey)
TypeError: Cannot handle this data type: (1, 1, 3), <f4

проект Ссылка: https://github.com/HzFu/MNet_DeepCDR

В чем ошибка и как ее исправить?

по этой ссылке: PIL TypeError: Невозможно обработать этот тип данных Я обновил мой код, но там все еще есть ошибка

def pro_process(temp_img, input_size):
print(temp_img.shape)
img = np.asarray(temp_img).astype('float32')
img = np.array(Image.fromarray((img * 255).astype(np.uint8)).resize((input_size, input_size)).convert(3))
return img

ошибка:

Traceback (most recent call last):
  File "H:\OneDrive\synchronization code\Developing collection\Python\MNet_DeepCDR-master\mnet_deep_cdr_ide\run\Step_3_MNet_test.py", line 56, in <module>
  temp_img = pro_process(Disc_flat, CDRSeg_size)
  File "S:\Program Files\Python36\lib\site-packages\mnet_deep_cdr\mnet_utils.py", line 18, in pro_process
  img = np.array(Image.fromarray((img * 255).astype(np.uint8)).resize((input_size, input_size)).convert(3))
  File "S:\Program Files\Python36\lib\site-packages\PIL\Image.py", line 995, in convert
  im = self.im.convert(mode, dither)
 TypeError: argument 1 must be str, not int

Ответы [ 4 ]

1 голос
/ 22 февраля 2020

проблема связана с типом массива с плавающей точкой (0 - 1). Преобразуйте массив в Uint (0-255), связан следующий поток PIL TypeError: Не удается обработать этот тип данных

0 голосов
/ 21 марта 2020

Я отправил электронное письмо автору, и спасибо всем, ребята, помогите. он сказал мне ответ.

Мы обнаруживаем, что эта проблема связана с тем, что оригинальный Scipy.mis c .imresize в SciPy 1.0.0 был удален в SciPy 1.3.0. Мы заменим его, используя «Image.resize», что может привести к некоторой ошибке. Мы исправили эту ошибку в Github. Кроме того, из-за изменения функции изменения размера результаты, основанные на исходной модели (т. Е. Model_MNet_REFUGE.h5), отличаются от бумаги.

0 голосов
/ 09 марта 2020

пожалуйста, попробуйте этот код:

np.array(Image.fromarray((img * 255).astype(np.uint8)).resize((input_size, input_size)).convert('RGB'))
0 голосов
/ 22 февраля 2020

Возможная копия Импорт файлов PNG в Numpy?

Копия вставлена ​​оттуда:

import imageio

im = imageio.imread('my_image.png')
print(im.shape)

Вы также можете использовать imageio для загрузки из необычных источников :

im = imageio.imread('http://upload.wikimedia.org/wikipedia/commons/d/de/Wikipedia_Logo_1.0.png')

Это дает из файла png массив numpy типа uint8 (целое число 0-255) Terveisin, Markus

...