2010-07-16 64 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。

這爲我提供了一個對話框,其中包含我的機器上可用的編解碼器列表。我選擇了「無壓縮」編解碼器,視頻已正確生成。