2010-07-16 84 views
3

我想录制使用Emgu CV从网络摄像头捕获的视频,但是我得到一个异常。在Emgu写视频时出错Cv

_capture = new Capture(0); 
_capture.QueryFrame(); 
captureOutput = new VideoWriter(@"output.avi", 
           (int)_capture.GetCaptureProperty(Emgu.CV.CvEnum.CAP_PROP.CV_CAP_PROP_FOURCC), 
           (int)_capture.GetCaptureProperty(Emgu.CV.CvEnum.CAP_PROP.CV_CAP_PROP_FPS), 
           (int)_capture.GetCaptureProperty(Emgu.CV.CvEnum.CAP_PROP.CV_CAP_PROP_FRAME_WIDTH), 
           (int)_capture.GetCaptureProperty(Emgu.CV.CvEnum.CAP_PROP.CV_CAP_PROP_FRAME_HEIGHT), 
           true); 
Image<Bgr, Byte> frame = _capture.QueryFrame(); 
captureOutput.WriteFrame(frame); 

我得到一个“试图除以零”。当我执行captureOutput.WriteFrame(frame)行时发生异常。

+0

好的解决了这个问题。问题是选择合适的编解码器进行录制。我改变了下面第3行的一部分: _capture.GetCaptureProperty(Emgu.CV.CvEnum.CAP_PROP.CV_CAP_PROP_FOURCC) with -1。这为我提供了一个对话框,其中包含我的机器上可用的编解码器列表。我选择了“无压缩”编解码器,视频已正确生成。 – Shivam 2010-07-18 19:33:35

+0

恭喜您解决您的问题。请张贴这个答案。 [可以问和回答你自己的问题](http://blog.stackoverflow.com/2011/07/its-ok-to-ask-and-answer-your-own-questions/)。 – Gilles 2012-05-12 20:02:29

+0

@Shivam:请将您的解决方案作为回答并关闭此问题。 – Shiva 2014-01-14 07:26:11

回答

1

引用来自评论:

问题出在选择合适的编解码器进行录制。我改变了下面第3行的一部分:

_capture.GetCaptureProperty(Emgu.CV.CvEnum.CAP_PROP.CV_CAP_PROP_FOURCC) with -1。

这为我提供了一个对话框,其中包含我的机器上可用的编解码器列表。我选择了“无压缩”编解码器,视频已正确生成。