2017-09-22 1 views
-1

Je ne peux pas comprendre, pourquoi cela ne fonctionne pas. Il devrait retourner array (32,32,3) mais pour une raison quelconque, je reçois la valeur NoneType. Le chemin est correct.Pourquoi est-ce que je reçois un "NoneType" en python en utilisant la bibliothèque cv2?

Voici le code:

path = '/Users/abylikhsanov1/AI/carnd/term1/CarND-Traffic-Sign-Classifier- 
Project/load_images/' 
image = {'8': cv2.imread(path+'one.jpg'), 
    '1': cv2.imread(path+'two.jpg'), 
    '33': cv2.imread(path+'three.jpg'), 
    '35': cv2.imread(path+'four.jpg'), 
    '17': cv2.imread(path+'five.jpg')} 

print(image['8'].shape) 

Je reçois cette erreur: enter image description here

+2

Parce que le fichier n'existe pas. Dans la documentation du CV, il est dit: "Même si le chemin de l'image est faux, il ne produira aucune erreur, mais imprimer img vous donnera None". –

+0

essayez de regarder cette question https://stackoverflow.com/questions/17949268/cv2-imread-always-returns-nonetype, peut-être aidera – lub0v

+0

@WillemVanOnsem Mais il existe, c'est le problème –

Répondre

2

Eh bien, ce ne peut être le résultat du fait que les rendements cv2.imreadNone. Si on lit le documentation of OpenCV nous voyons:

Warning: Even if the image path is wrong, it won't throw any error, but print img will give you None.

Cela veut donc dire que le filepath:

'/Users/abylikhsanov1/AI/carnd/term1/CarND-Traffic-Sign-Classifier-Project/load_images/one.jpg' 

est pas un fichier valide.

Si vous écrivez ls '/Users/abylikhsanov1/AI/carnd/term1/CarND-Traffic-Sign-Classifier-Project/load_images/one.jpg' dans le terminal, il signalera probablement que le fichier n'existe pas.

+0

Eh bien, malheureusement, il existe. J'ai même vérifié en utilisant le terminal. J'ai chargé d'autres images dans le même chemin de fichier mais en utilisant pickle. Donc ce n'est pas le cas –

+0

@AbylIkhsanov: que se passe-t-il si vous ajoutez '0' comme second argument dans l'appel de la fonction, donc' imread (filepath, 0) '? –

+0

Aussi, je ne pense pas que vous pouvez 'ls' au fichier jpg. Peut être que cela pourrait être dû à la permission –