Erreur OpenCV: l’assertion a échoué (scn == 3 || scn == 4) dans cv :: cvtColor, fichier .. \ .. \ .. \ .. \ opencv \ modules \ imgproc \ src \ color.cpp, ligne 3737

Bonjour, j’essaie de lancer cet exemple de code à partir d’OpenCV:

#include "opencv2\opencv.hpp" using namespace cv; int main(int, char**) { VideoCapture cap(0); // open the default camera if (!cap.isOpened()) // check if we succeeded return -1; Mat edges; namedWindow("edges", 1); for (;;) { Mat frame; cap >> frame; // get a new frame from camera cvtColor(frame, edges, CV_BGR2GRAY); GaussianBlur(edges, edges, Size(7, 7), 1.5, 1.5); Canny(edges, edges, 0, 30, 3); imshow("edges", edges); if (waitKey(30) >= 0) break; } // the camera will be deinitialized automatically in VideoCapture destructor return 0; } 

J’utilise actuellement un BootCamp Windows 7 x64 sur un Macbook Pro. J’utilise ce code avec Visual Studios 2013 et OpenCV 2.4.9.

Voici comment j’ai configuré mes propriétés de configuration:

 VC++ Directories: Include Directories: H:\opencv\build\include;$(IncludePath) Linker:General:Additional Library Directories: H:\opencv\build\x64\vc12\lib;%(AdditionalLibraryDirectories) Linker:Input:Additional Dependencies: opencv_calib3d249.lib;opencv_consortingb249.lib;opencv_core249.lib;opencv_features2d249.lib;opencv_flann249.lib;opencv_gpu249.lib;opencv_highgui249.lib;opencv_imgproc249.lib;opencv_legacy249.lib;opencv_ml249.lib;opencv_nonfree249.lib;opencv_objdetect249.lib;opencv_ocl249.lib;opencv_photo249.lib;opencv_stitching249.lib;opencv_superres249.lib;opencv_ts249.lib;opencv_video249.lib;opencv_videostab249.lib;%(AdditionalDependencies) 

Lorsque je clique sur le débogueur Windows local en mode Release x64, l’erreur suivante apparaît de Visual Studios:

Exception de première chance à 0x000007FEFD21B3DD dans Project3.exe: exception Microsoft C ++: cv :: Exception à l’emplacement de mémoire 0x000000000019A8A0.

S’il existe un gestionnaire pour cette exception, le programme peut être poursuivi en toute sécurité.

Lorsque je clique plutôt sur Pause (effrayé d’appuyer sur Continuer), une fenêtre nommée Bords apparaît et la caméra s’allume car le voyant vert s’allume. Mais j’obtiens aussi l’erreur suivante dans la fenêtre de commande:

Erreur OpenCV: l’assertion a échoué (scn == 3 || scn == 4) dans cv :: cvtColor, fichier …….. \ opencv \ modules \ imgproc \ src \ color.cpp, ligne 3737

Je suis assez nouveau en C ++ et Visual Studios, toute aide serait la bienvenue. Merci d’avance!

De la conversation dans les commentaires à la question, nous avons vu que VideoCapture donne un cadre en niveaux de gris. L’appel à cvtColor provoqué le crash.

 ... Mat frame; cap >> frame; // frame is already CV_8UC1 //cvtColor(frame, edges, CV_BGR2GRAY); // so don't to convert here, or crash! edges = frame.clone(); ...