36 votes

Erreur de type : Impossible de traiter ce type de données : (1, 1, 3), <f4>.

La temp_image est (600, 600, 3) avec des valeurs allant de 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

Il donne l'erreur suivante :

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

lien du projet : https://github.com/HzFu/MNet_DeepCDR

Quelle est l'erreur et comment la réparer ?

selon ce lien : PIL TypeError : Impossible de gérer ce type de données J'ai mis à jour mon code, mais il y a toujours une erreur

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

erreur :

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

59voto

Sam Points 31

Le message d'erreur semble se plaindre de la forme, mais il s'agit en fait du type de données. La multiplication par 255, puis le passage à uint8 ont réglé le problème pour moi :

random_array = np.random.random_sample(content_array.shape) * 255
random_array = random_array.astype(np.uint8)
random_image = Image.fromarray(random_array)

23voto

Puneeth Raj Points 27

Le problème vient du type float (0-1) du tableau. Convertissez le tableau en Uint (0-255). Le fil de discussion suivant est lié : PIL TypeError : Impossible de gérer ce type de données

im = Image.fromarray((x * 255).astype(np.uint8))

8voto

BenedictGrain Points 71

Veuillez essayer ce code :

np.array(Image.fromarray((img * 255).astype(np.uint8)).resize((input_size, input_size)).convert('RGB'))

2voto

yuhang.tao Points 150

J'ai envoyé un email à l'auteur, et merci pour votre aide à tous. il m'a donné la réponse.

Nous trouvons que ce problème est dû au fait que l'original scipy.misc.imresize dans SciPy 1.0.0 a été supprimé dans SciPy 1.3.0. Nous le remplaçons par l'utilisation de Image.resize ce qui peut provoquer des erreurs. Nous avons corrigé ce bug dans Github. De plus, en raison de la modification de la fonction de redimensionnement, les résultats basés sur le modèle original (c'est-à-dire, Model\_MNet\_REFUGE.h5 ) sont différentes de celles du papier.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X