Working with Videos in OpenCV
#include <stdio.h>
#include <cv.h>
#include <highgui.h>
int main(void)
{
/* Create an object that decodes the input video stream. */
CvCapture *input_video = cvCaptureFromFile("VideoPlay_Demo.avi");
if (input_video == NULL)
{
/* Either the video didn't exist OR codec doesn't support */
fprintf(stderr, "Error: Can't open video.\n");
return -1;
}
/* Read the video's frame size out of the AVI. */
CvSize frame_size;
frame_size.height = (int) cvGetCaptureProperty(input_video, CV_CAP_PROP_FRAME_HEIGHT);
frame_size.width = (int) cvGetCaptureProperty(input_video, CV_CAP_PROP_FRAME_WIDTH);
/* Determine the number of frames in the AVI. */
long number_of_frames;
number_of_frames = (int) cvGetCaptureProperty(input_video, CV_CAP_PROP_FRAME_COUNT);
/* Create a windows called "VideoPlay_Demo" for output.
* window automatically change its size to match the output. */
cvNamedWindow("VideoPlay_Demo", CV_WINDOW_AUTOSIZE);
long current_frame = 0;
while(true)
{
static IplImage *frame = NULL;
/* Go to the frame we want */
cvSetCaptureProperty( input_video, CV_CAP_PROP_POS_FRAMES, current_frame );
/* Get the next frame of the video */
frame = cvQueryFrame( input_video );
if (frame == NULL)
{
fprintf(stderr, "Error: Hmm. The end came sooner than we thought.\n");
return -1;
}
/* Now display the image */
cvShowImage("VideoPlay_Demo", frame);
/* And wait for. If the argument is 0 then it waits forever otherwise it waits that number of milliseconds */
cvWaitKey(60);
current_frame++;
if (current_frame < 0)
current_frame = 0;
if (current_frame >= number_of_frames - 1)
current_frame = number_of_frames - 2;
}
}
.
No comments:
Post a Comment
Note: Only a member of this blog may post a comment.