2014-06-27 2 views
0

Je reçois une erreur d'assertion lorsque j'essaie de convertir une image d'entrée en niveaux de gris. J'ai vu beaucoup de messages autour du même problème mais aucun ne semble donner une raison pour laquelle il est erroné. Dans le code ci-dessous, l'entrée n'est pas NULL et a été chargée à partir d'une image "test.jpg" sur mon disque en utilisant imgRead.L'assertion cvtColor d'opencv a échoué C++

Mat img_gray; 
cvtColor(input, img_gray, CV_BGR2GRAY); 

Assertion Erreur:

OpenCV automatique Plaque d'immatriculation Reconnaissance travail avec fichier: Test OpenCV Erreur: Assertion a échoué (scn == 3 || == scn 4) cvtColor, fichier/opt/local/var/macports/build/_opt_mports_dports_graphics_opencv/OpenCV/travail/OpenCV-2.4.9/modules/imgproc/src/color.cpp, ligne 3737 libC++ abi.dylib: Mettre fin à une exception appelée lancer

Le le code provient de https://github.com/MasteringOpenCV/code/blob/master/Chapter5_NumberPlateRecognition/DetectRegions.cpp

vérifier la ligne 72.

J'ai essayé plusieurs images sans succès. Toute suggestion serait appréciée. Merci

+0

Sans le message d'affirmation, comment pourrions-nous deviner ce qui ne va pas? – Bull

Répondre

4

Ce message d'assertion signifie que l'image que vous avez transmise n'est pas à 3 ou 4 canaux. E.g. Si vous transmettez une image en niveaux de gris à un canal, elle échouera.

essayer de mettre en

std :: cerr < < "image chans:" < < image.channels() < < std :: endl;

immédiatement avant cvtColor(). Je suis sûr qu'il ne sortira pas 3 ou 4.

+0

Je supposais que seules les images à échelle de gris auraient un seul canal. – noobie