cvCreateVideoWriter
创建视频文件写入器
typedef struct CvVideoWriter CvVideoWriter;
CvVideoWriter* cvCreateVideoWriter( const char* filename, int fourcc, double fps, CvSize frame_size, int is_color=1 );
filename
输出视频文件名。
fourcc
四个字符用来表示压缩帧的codec 例如,CV_FOURCC('P','I','M','1')是MPEG-1 codec, CV_FOURCC('M','J','P','G')是motion-jpeg codec等。 在Win32下,如果传入参数-1,可以从一个对话框中选择压缩方法和压缩参数。
fps
被创建视频流的帧率。
frame_size
视频流的大小。
is_color
如果非零,编码器将希望得到彩色帧并进行编码;否则,是灰度帧(只有在Windows下支持这个标志)。
函数cvCreateVideoWriter创建视频写入器结构。
使用以下操作
pWriter = cvCreateVideoWriter(strAviName,CV_FOURCC('D','I','V','X'),fps,cvSize(nFrameW,nFrameH),1);
cvWriteFrame(pWriter,pFrame);
在系统中包含DIVX编码器的前提下,可以将pFrame写入AVI文件strAviName中。
先开一个CvCapture及IplImage,用cvCreateCameraCapture()选定视频装置编号,给窗口命名,接着,就是写入AVI文件的重头戏啦,用CvVideoWriter建立一个writer的数据结构,给它AVI文件名,AVI格式,FPS(frame per second)每秒图片播放频率(即帧率),CvSize数据结构及Avi文件的颜色种类,再用cvWriteFrame()写入AVI文件。最后,记得用 cvReleaseVideoWriter()把CvVideoWriter数据结构释放,cvReleaseVideoWriter()非常重要,因为AVI文件的文件格式收尾就是要用到cvReleaseVideoWriter(),也就是说,如果不用到 cvReleaseVideoWriter(),AVI文件就无法打开.这边,先从cvCreateCameraCapture()详细叙述.
对于多视频装置的实例,假如,有两Window XP(VFW)的视频装置要控制,则用两个相同的cvCreateCameraCapture()函数及两个相同的CV_CAP_VFW代号,而OpenCV会有接口来选择目标装置.
cvCreateCameraCapture(装置数字代号);
cvCreateVideoWriter()
它要放的参数分别为AVI文件名,AVI格式,FPS,CvSize数据结构及AVI文件的颜色种类,AVI的格式有很多种,由于影片有很多各个不同的压缩格式,因此,被分为非常多类,许多的种类也只是在学术界采用,real player及media player很多都不适用,这边压缩格式的规格分为:
CV_FOURCC('P','I','M','1') MPEG-1 codec
CV_FOURCC('M','J','P','G') motion-jpeg codec (does not work well)
CV_FOURCC('M', 'P', '4', '2') MPEG-4.2 codec
CV_FOURCC('D', 'I', 'V', '3') MPEG-4.3 codec
CV_FOURCC('D', 'I', 'V', 'X') MPEG-4 codec
CV_FOURCC('U', '2', '6', '3') H263 codec
CV_FOURCC('I', '2', '6', '3') H263I codec
CV_FOURCC('F', 'L', 'V', '1') FLV1 codec
它的压缩格是参数方法被定义在"highgui.h"里的