简体   繁体   中英

How to extract Frames from AVI video

Hey peeps so far i manage OpenCV to play a video.avi but what should i do now to extract frames...?

below is the code i written so far that got my video playing:

#include<opencv\cv.h>
#include<opencv\highgui.h>
#include<opencv\ml.h>
#include<opencv\cxcore.h>



int main( int argc, char** argv ) {
cvNamedWindow( "DisplayVideo", CV_WINDOW_AUTOSIZE );
CvCapture* capture = cvCreateFileCapture( argv[1] );
IplImage* frame;
while(1) {
frame = cvQueryFrame( capture );
if( !frame ) break;
cvShowImage( "DisplayVideo", frame );
char c = cvWaitKey(33);
if( c == 27 ) break;
}
cvReleaseCapture( &capture );
cvDestroyWindow("DisplayVideo" );
}

frame is the frame you are extracting. If you want to convert that to a cv::Mat you can do that by creating a mat with that IplImage:

Mat myImage(IplImage);

There is a nice tutorial on it here .

However, you are doing it the old way. The newest version of OpenCV has the latest camera capture abilities, and you should do something like this:

#include "cv.h"
#include "highgui.h"

using namespace cv;

int main()
{
    VideoCapture cap(0); // open the default camera
    if(!cap.isOpened())  // check if we succeeded
        return -1;

    namedWindow("Output",1);

    while(true)
    {
        Mat frame;
        cap >> frame; // get a new frame from camera


        //Do your processing here
        ...

        //Show the image

        imshow("Output", frame);
        if(waitKey(30) >= 0) break;
    }

    // the camera will be deinitialized automatically in VideoCapture destructor
    return 0;
}

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM