Capturing Moving Pictures
The simplest way to get moving pictures into OpenCV is to use a webcam.
This works without ffmpeg being installed, and as such provides a useful
starting point.
Before pulling the frames from a camera (or a file), you will need to set
up an object from which you can capture the frames. To do this, use the
following:
CvCapture *capture = cvCaptureFromCAM(int index);
index refers to the number assigned to your camera by your operating
system, usually 0. If that doesn't work, try 1.
ffmpeg users can also load video files using the same line but substituting
AVI instead of CAM. In this case the parameter will be a char[ ] filename.
Once this is done you can query the camera (or the file) at any point in your
program for a frame using:
IplImage *frame = cvQueryFrame(CvCapture* capture); where capture
is the object above.
When you have finished using the capture, it should be released using
cvReleaseCapture(CvCapture** capture).
Saving Movies (ffmpeg only)
Create a video writer object, as follows:
CvVideoWriter *writer = cvCreateVideoWriter(char[ ] filename, int fourcc,
double fps, CvSize frame_size, int type);
filename, as always, can include a path. fourcc specifies the
'four character code', or the video format:
CV_FOURCC('P', 'I', 'M', '1') for MPEG-1,
CV_FOURCC('M', 'J', 'P', 'G') for motion-JPEG,
CV_FOURCC('D', 'I', 'B', ' ') for RGB avi files, or
CV_FOURCC('I', 'Y', 'U', 'V') for uncompressed YUV, 4:2:0 chroma
subsampled.
fps gives the number of frames per second, frame_size is the
size of the frames used (and should match those of the IplImages written),
and type can be 0 (greyscale) or 1 (colour). Currently these only
work in Windows.
Frames are then written with cvWriteFrame(CvVideoWriter* writer,
IplImage* img) and the writer is released with
cvReleaseVideoWriter(CvVideoWriter** writer).
