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
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
若编码器代号为 -1,则运行时会弹出一个编码器选择框.
fps
被创建视频流的帧率。
frame_size
视频流的大小。
is_color
如果非零,编码器将希望得到彩色帧并进行编码;否则,是灰度帧(只有在Windows下支持这个标志)。
函数cvCreateVideoWriter
创建视频写入器结构。
遇到的问题
第二个参数除了选择-1(基于Windows平台)让其弹出一个窗口选择压缩帧格式或 先获取视频编码属性,然后设置写入器编码属性,就能创建成功了
outCompressCodec = (int)cvGetCaptureProperty(pCapture,
CV_CAP_PROP_FOURCC);
pVideo = cvCreateVideoWriter("c://out.avi",
outCompressCodec, m_framerate, cvGetSize(frame), 1);
选择其他参数 都会出错 , 在网上找了发现有不少人遇到类似的情况,但解决办法却没有.
解决方法
后来偶然在网上看到一篇介绍使用opencv保存mp4格式的文章,里面说到要安装ffdshow软件才能保存mp4格式的文件.我安装完好测试确实如此.接着发现 cvCreateVideoWriter 函数第二个参数正常了,可以使用函数说明中的任何参数.万事大吉.
补充:cvWriteFrame不支持ROI