Salve ragazzi , avrei bisogno di aiuto riguardo ad un problema con un programmav che utilizza le librerie opencv:
il progetto deve prendere in input una sequenza di immagini dalla webcam , e confrontarle per rilevare se c'è differenza di pixel e quindi movimento , se viene rilevato movimento deve scattare una foto.
il codice del progetto è questo :
questo codice lo ha eseguito correttamente una sola volta , se lo eseguo adesso crasha dandomi il seguente errore:codice:#include <opencv\cv.h> #include <stdio.h> #include <opencv\highgui.h> #include "opencv2\core\core_c.h" #include <stdlib.h> int main() { IplImage *frame, *frametime1, *frametime2, *frameForeground; CvCapture* capture; int key=0; //catturo l'immagine capture = cvCaptureFromCAM(0); //inizializzo l'immagine frameris CvSize isize=cvSize(640,480); frameForeground=cvCreateImage(isize,8,1); while(key!='q') { frame = cvQueryFrame( capture ); cvShowImage("video", frame ); key=cvWaitKey(10); cvSaveImage("foto1.jpg",frame,0); frame = cvQueryFrame( capture ); cvSaveImage("foto2.jpg",frame,0); //faccio la differenza frametime1=cvLoadImage("foto1.jpg", CV_LOAD_IMAGE_GRAYSCALE); frametime2=cvLoadImage("foto2.jpg", CV_LOAD_IMAGE_GRAYSCALE); cvAbsDiff(frametime1, frametime2, frameForeground); cvThreshold(frameForeground, frameForeground, 15, 255, CV_THRESH_BINARY); cvShowImage("ris",frameForeground); //conto i pixel bianchi int a=0; int i, j; for(i=0;i<480;i++) { for(j=0;j<640;j++) { CvScalar pixel=cvGet2D(frameForeground,i,j); a=a+pixel.val[0]; } } //se c'è stato movimento scatto una foto if(a>2000000) { cvSaveImage("Ladro.jpg",frame,0); } cvReleaseImage(&frametime1); cvReleaseImage(&frametime2); } //libero la memoria cvReleaseCapture( &capture ); cvDestroyWindow("video"); return 0; }
terminate called after throwing an instance of 'cv::Exception'
what(): C:\openCVinstaller\opencv\modules\core\src\arithm. cpp:2841: error: (-215) src1.size == dst.size && src1.type() == dst.type() in function cvAbsDiff
qualcuno può aiutarmi e farmi capire dove sbaglio? grazie!

Rispondi quotando