Comment corriger l'erreur cv2.error: OpenCV .error: (-215:Assertion failed) !_src.empty() dans la fonction 'cv::cvtColor' ?

La librairie Python OpenCV est une librairie spécialisée dans le traitement d'images en temps réel. C'est une librairie très utilisée dans le domaine scientifique, un domaine dans lequel le langage Python est très répandu. Elle permet de tracer des éléments de modélisation dans ces images. Si vous travaillez avec cette image, vous pouvez obtenir le message d'erreur "OpenCV .error: (-215:Assertion failed) !_src.empty()". Ce message est dû à un souci avec le chemin vers l'image.

Ce message s'affiche en effet si OpenCV ne trouve pas l'image. Vous devez donc vous assurer que l'image que vous manipulez est bien située dans l'emplacement que vous indiquez. Si vous travaillez avec le système d'exploitation Windows, vous devez spécifier les antislashs en les doublant. Sinon, le chemin vers le dossier ne sera pas correctement pris en compte.

import cv2
im = cv2.imread("C:\\chemin\\vers\\mon\\image.jpg", 1)
im = cv2.cvtColor(im, cv2.COLOR_RGB2GRAY)

Si votre script Python est utilisé dans le même dossier que l'image, vous pouvez utiliser le module "sys", qui permet d'utiliser des fonctions liées au système d'exploitation. La variable "sys.path" est composée de plusieurs éléments liés au répertoire dans lequel est exécuté le script. La variable "sys.path[0]" contient le répertoire courant du script. Cette écriture présente l'avantage de toujours fonctionner, quel que soit l'emplacement ou l'ordinateur dans lequel se situe votre projet.

import cv2
import sys
im = cv2.imread(sys.path[0]+"/image.jpg", 1)
im = cv2.cvtColor(im, cv2.COLOR_RGB2GRAY)

Pour vous assurer que l'image que vous avez ouverte existe bien, vous pouvez utiliser la fonction "type" proposée par le langage Python. Le type retourné doit être "numpy.ndarray". Cela indique que l'image a bien été chargée, vous pouvez donc continuer à travailler sur le reste du code.

image = cv2.imread("C:\\chemin\\vers\\mon\\image.jpg")
type(image)
# numpy.ndarray

Python