Ciao sto cercando di eseguire questo codice di esempio da OpenCV:Errore OpenCV: asserzione non riuscita (scn == 3 || scn == 4) in cv :: cvtColor, file .. .. .. .. opencv modules imgproc src color.cpp, linea 3737
#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;
}
attualmente sto usando un Windows 7 x64 BootCamp su un MacBook Pro. Sto eseguendo questo codice con Visual Studios 2013 e OpenCV 2.4.9.
Ecco come ho impostato il mio Properties config:
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_contrib249.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)
Quando clicco sul locale di Windows Debugger in modalità di rilascio x64 ottengo il seguente errore da Studios visivi:
First-chance exception at 0x000007FEFD21B3DD in Project3.exe: Microsoft C++ exception: cv::Exception at memory location 0x000000000019A8A0.
If there is a handler for this exception, the program may be safely continued.
Quando faccio clic su Break invece (paura di premere Continua), viene visualizzata una finestra denominata Edges e la fotocamera si accende da quando si accende la luce verde. Ma ho anche ottenere il seguente errore nella finestra di comando:
OpenCV Error: Assertion failed (scn == 3 || scn == 4) in cv:: cvtColor, file ........\opencv\modules\imgproc\src\color.cpp, line 3737
Sono abbastanza nuovo per C++ e Visual Studio, qualsiasi aiuto sarebbe apprezzato. Grazie in anticipo!
funziona per me "come è". Questo errore dovrebbe significare che il tuo frame non è RGB. – Miki
Mi dispiace @Miki Sono molto nuovo a questo. Se il mio frame non è RGB, cosa dovrei fare per risolverlo? –
Il codice funziona bene (è copia e incolla dai documenti opencv, giusto?), Quindi non è un problema con il codice. Prova ad aggiungere 'std :: cout << frame.channels(); std :: cout << edges.channels();' prima di cvtColor, dovrebbe stampare un sacco di 31 – Miki