OpenCV capture d’images à partir d’AVI

Je travaille sur un projet avec openCV 2.2. Je dois effectuer le traitement sur chaque image d’un fichier AVI, mais lorsque je lance mon code, il ne saisit que la première image du fichier. Le CV_CAP_PROP_POS_FRAMES ne semble pas fonctionner. Des idées pourquoi pas?

CvCapture* capture = cvCaptureFromAVI("test1.avi"); IplImage *img = 0; if (!cvGrabFrame(capture)) { printf("Error: Couldn't open the image file.\n"); return 1; } int numFrames = (int) cvGetCaptureProperty(capture, CV_CAP_PROP_FRAME_COUNT); int posFrame = 1; for(int i =0; i <= numFrames; i++){ cvSetCaptureProperty(capture, CV_CAP_PROP_POS_FRAMES, i); posFrame = cvGetCaptureProperty(capture, CV_CAP_PROP_POS_FRAMES); img = cvGrabFrame(capture); cvNamedWindow("Image:", CV_WINDOW_AUTOSIZE); cvShowImage("Image:", img); printf("%i\n",posFrame); cvWaitKey(0); cvDestroyWindow("Image:"); } 

Pourquoi n’essayez-vous pas de cette façon en utilisant OpenCV 2.3? Je pense que c’est plus direct et efficace, et plus clair à vos yeux:

 VideoCapture _videoSource; if(!_videoSource.open("test1.avi")) { exit(1); // Exit if fail } _videoSource.set(CV_CAP_PROP_CONVERT_RGB, 1); Mat frame; namedWindow("Image"); int posFrame; while(1) { _videoSource >> frame; posFrame=_videoSource.get(CV_CAP_PROP_POS_FRAMES); imshow("output", frame); return 0; } 

Quelque chose comme ça devrait marcher.