Writing to an AVI File
In many applications we will want to record streaming input or even disparate captured
images to an output video stream, and OpenCV provides a straightforward method for doing this. Just
as we are able to create a capture device that allows us to grab frames one at a time from a
video stream, we are able to create a writer device that allows us to place frames one by
one into a video file. The routine that allows us to do this is cvCreateVideoWriter().
Once this call has been made, we may successively call cvWriteFrame(), once for each frame, and finally cvReleaseVideoWriter() when we are done. Example 2-10 describes a simple program that opens
a video file, reads the contents, converts them to a log-polar format (something like what
your eye actually sees, as described in Chapter 6), and writes out
the log-polar image to a new video file.
Example 2-10. A complete program to read in a color video and write out the log-polar transformed video
// Convert a video to grayscale // argv[1]: input video file // argv[2]: name of new output file // #include "cv.h" #include "highgui.h" main( int argc, char* argv[] ) { CvCapture* capture = 0; capture = cvCreateFileCapture( argv[1] ); if(!capture){ return -1; } IplImage *bgr_frame=cvQueryFrame(capture);//Init the video read double fps = cvGetCaptureProperty ( capture, CV_CAP_PROP_FPS ); CvSize size = cvSize( (int)cvGetCaptureProperty( capture, CV_CAP_PROP_FRAME_WIDTH), (int)cvGetCaptureProperty( capture, CV_CAP_PROP_FRAME_HEIGHT) ...Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access