99 votes

Imread retourne None, en violation de l'assertion !_src.empty() dans la fonction 'cvtColor' erreur

Je suis en train de faire une conversion de couleur de base en python cependant je n'arrive pas à dépasser l'erreur ci-dessous. J'ai réinstallé python, opencv et essayé sur python 3.4.3 (le plus récent) et python 2.7 (qui est sur mon Mac).

J'ai installé opencv en utilisant le gestionnaire de paquets de python opencv-python.

Voici le code qui échoue :

frame = cv2.imread('frames/frame%d.tiff' % count)
frame_HSV= cv2.cvtColor(frame,cv2.COLOR_RGB2HSV)

Voici le message d'erreur :

cv2.error: OpenCV(3.4.3) /Users/travis/build/skvark/opencv-python/opencv/modules/imgproc/src/color.cpp:181: error: (-215:Assertion failed) !_src.empty() in function 'cvtColor'

0 votes

Je vais supposer que vos images sont étiquetées 01, 02, et ainsi de suite et non pas 1, 2, ... mais c'est ce que vous mettez. Si c'est le cas, mettez %02d (ce qui signifie que vous voulez des zéros de tête et que le nombre doit être long de 2 chiffres).

165voto

shaked litbak Points 1366

Cette erreur s'est produite parce que l'image n'a pas été chargée correctement. Donc, il y a un problème avec la ligne précédente cv2.imread. Ma suggestion est :

  • Vérifiez si l'image existe dans le chemin que vous avez donné

  • Vérifiez si la variable de comptage contient un nombre valide

0 votes

Oui merci, il y avait un bug dans mon code ci-dessus qui causait le répertoire d'image à ne pas être correct.

0 votes

OMG merci ... J'ai pris la peine de vérifier si j'avais la fonction qui n'a pas fonctionné et je n'ai pas remarqué qu'il n'y a pas de photo ... haha

0 votes

Peux confirmer que c'était le problème pour moi - j'ai dû m'assurer que le chemin complet était spécifié

18voto

Leonardo Mariga Points 845

Si quelqu'un rencontre le même problème en lisant une image d'une webcam :

Vérifiez si votre webcam est utilisée par une autre tâche et fermez-la. Cela résoudra le problème.

J'ai passé du temps avec cette erreur quand j'ai réalisé que ma caméra était en ligne dans un groupe de discussion sur Google Hangouts. Assurez-vous également que vos pilotes de webcam sont à jour.

0 votes

Particulièrement, dans un cahier Jupyter si vous avez utilisé une caméra une fois et avez ce problème, redémarrer le noyau fonctionne pour moi.

1 votes

J'adore les erreurs comme celles-ci; le summum du débogage

11voto

D Jacobson Points 11

J'ai également reçu cette erreur :

Traceback (most recent call last):
  File "face_detector.py", line 6, in 
    gray_img=cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
cv2.error: OpenCV(4.1.0) C:\projects\opencv-python\opencv\modules\imgproc\src\color.cpp:182: error: (-215:Assertion failed) !_src.empty() in function 'cv::cvtColor

Mon cv2.cvtColor(...) fonctionnait bien avec \photo.jpg mais pas avec \news.jpg. Finalement, j'ai réalisé que lorsque l'on travaille sur Windows avec python, ces caractères d'échappement peuvent poser problème !! Donc, ma "mauvaise" photo était échappée à cause du nom de fichier commençant par "n". Python interprétait \n comme un caractère d'échappement et OpenCV ne pouvait pas trouver le fichier !

Solution:
Préfixez les noms de fichiers dans python Windows avec r"...\...\" comme ci-dessous

cv2.imread(r".\images\news.jpg")

5voto

Sergey Inshev Points 131

Si le chemin est correct et le nom de l'image est correct, mais que vous obtenez toujours l'erreur

utilisez :

from skimage import io

img = io.imread(file_path)

au lieu de :

cv2.imread(file_path)

La fonction imread charge une image à partir du fichier spécifié et la renvoie. Si l'image ne peut pas être lue (en raison d'un fichier manquant, de permissions incorrectes, d'un format non pris en charge ou invalide), la fonction renvoie une matrice vide ( Mat::data==NULL ).

3voto

Ramandeep Singh Points 31

Vérifiez s'il s'agit du fichier jpg, png, bmp que vous fournissez et écrivez l'extension en conséquence.

2 votes

Après avoir converti mon .gif en l'un de ces formats, pytesseract 0.2.6 fonctionne.

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