Working with Video
When working with video we must consider several functions, including (of course) how to read and write video files. We must also think about how to actually play back such files on the screen.
The first thing we need is the CvCapture device. This
structure contains the information needed for reading frames from a camera or video file. Depending on the source, we use one of two
different calls to create and initialize a CvCapture
structure.
CvCapture* cvCreateFileCapture( const char* filename ); CvCapture* cvCreateCameraCapture( int index );
In the case of cvCreateFileCapture(), we can simply
give a filename for an MPG or AVI file and OpenCV will open the file and prepare to read it.
If the open is successful and we are able to start reading frames, a pointer to an
initialized CvCapture structure will be
returned.
A lot of people don't always check these sorts of things, thinking that nothing will go
wrong. Don't do that here. The returned pointer will be NULL if for some reason the file could not be opened (e.g., if the file does
not exist), but cvCreateFileCapture() will also return a
NULL pointer if the codec with which the video is
compressed is not known. The subtleties of compression codecs are beyond the scope of this book, but in general you will need to have the appropriate library already resident on your computer in order to successfully read the video file. For example, if you want to read a file encoded with DIVX or MPG4 compression on a Windows machine, ...