Получение кадров из видео .avi с помощью OpenCV

#include "cv.h"
#include "highgui.h"
int main(int argc, char** argv)
{
CvCapture* capture=0;
IplImage* frame=0;

capture = cvCaptureFromAVI("C:\\boy walking back.avi"); // read AVI video
if( !capture )
    throw "Error when reading steam_avi";

cvNamedWindow( "w", 1);

for( ; ; )
{
/*  int cvGrabFrame (CvCapture* capture);
    IplImage* cvRetrieveFrame (CvCapture* capture)*/
    frame = cvQueryFrame( capture );
if(!frame)
        break;
    cvShowImage("w", frame);

}
cvWaitKey(0); // key press to close window
cvDestroyWindow("w");
cvReleaseImage(&frame);
}

Я использую openCV с VS2008. Я прочитал видеофайл и использовал CV_CAP_PROP_FRAME_COUNT, чтобы получить количество кадров, которое было приблизительно 130 для 4-секундного видеоклипа. Я выполняю распознавание движения при ходьбе, поэтому мне нужно получать каждые следующие 5 кадров, так как между 5 кадрами движения тела мало меняются. У меня пока есть программа, которая позволяет мне получить один кадр видеоклипа. Однако я не могу получить разные кадры, а также я не уверен, как получить каждые следующие 5 кадров. Выше приведен код, используемый для получения одного кадра видео.

5
задан sue-ling 12 February 2012 в 05:01
поделиться