尝试使用OpenCV编写视频文件

时间:2010-02-18 22:08:13

标签: file opencv video file-io

我正在尝试使用OpenCV来编写视频文件。我有一个简单的程序,从视频文件加载帧然后接受保存它们

首先,cvCreateVideoWrite始终返回NULL。我从你的小组那里得到了一个答案,说它返回单独的图像,并尝试将文件名更改为test0001.png,这很有效。

但是现在cvWriteFrame函数总是失败,代码是

 CString path;
 path="d:\\mice\\Test_Day26_2.avi";

   CvCapture* capture = cvCaptureFromAVI(path);
   IplImage* img = 0;

 CvVideoWriter *writer = 0;
 int isColor = 1;
 int fps     = 25;  // or 30
 int frameW  = 640; // 744 for firewire cameras
 int frameH  = 480; // 480 for firewire cameras
 writer=cvCreateVideoWriter("d:\\mice\\test0001.png",CV_FOURCC('P','I','M','1'),
                           fps,cvSize(frameW,frameH),isColor);
 if (writer==0)
  MessageBox("could not open writter");

int nFrames = 50;
for(int i=0;i<nFrames;i++){
  if (!cvGrabFrame(capture))
   MessageBox("could not grab frame");
  img=cvRetrieveFrame(capture);  // retrieve the captured frame
  if (img==0)
   MessageBox("could not retrive data");
  if (!cvWriteFrame(writer,img) )
   MessageBox("could not write frame");
}
cvReleaseVideoWriter(&writer);

3 个答案:

答案 0 :(得分:1)

尝试CV_FOURCC('D', 'I', 'V', 'X')CV_FOURCC('f', 'f', 'd', 's')*.avi文件名}或CV_FOURCC_DEFAULT*.mpg)。在opencv&gt; _&gt;

中,视频写作仍然非常混乱

答案 1 :(得分:0)

我在OpenCV中看过很多关于编写视频的问题。我发现英特尔iYUV格式能够很好地满足我的需求。

答案 2 :(得分:0)

您的图书馆是否已定义HAVE_FFMPEG? 如果不是,您可能需要使用该选项重新编译opencv。您应该在配置步骤中看到类似的内容:

...
Video I/O--------------
Use QuickTime      no
Use xine           no
Use ffmpeg:        yes
Use v4l            yes
...

如果您没有ffmpeg,可以从here获取。