我正在尝试使用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 :(得分:1)
引用评论:
问题在于选择要记录的正确编解码器。我改变了下面第3行的部分内容:
带有-1的 _capture.GetCaptureProperty(Emgu.CV.CvEnum.CAP_PROP.CV_CAP_PROP_FOURCC)
。
这为我提供了一个对话框,其中包含我的机器上可用的编解码器列表。我选择了“未压缩”编解码器,视频已正确生成。