2015-06-01 70 views
0

我正在使用Visual Studio 2008和OpenCV 2.4.5。無法重用OpenCV :: VideoWriter

我有一個包含處理視頻幀的類,我想將它們保存爲視頻文件。我在構造函數中創建了cv :: VideoWriter對象,並通過循環將幀寫入到cv :: VideoWriter對象,併成功獲取所需的視頻。這個問題在獲得第一個視頻後開始。

我有時也想結束由CV :: VideoWriter這個視頻文件::釋放(),並用不同的名稱重新打開它像下面重用此對象:

outputVideo.release(); 

outputVideo.open("D:\\example2.avi", CV_FOURCC('D','I','V','X'), 15, videoSize, true); 

但我意識到,對於第二次,即使cv :: VideoWriter :: isOpened()函數有趣地返回true,VideoWriter也不會在相關路徑中創建任何文件。

但更有趣的是,我也不能在我的課程的其他地方創建和使用cv :: VideoWriter對象的任何其他實例。越來越有意思的是,我只能在構造函數中創建和使用多個實例。

試過很多東西;指針,不同的編解碼器,在構造函數中創建對象並在其他方法中使用它們,而沒有任何幫助。

我看到的唯一一件事情是我只能創建一個實例並僅使用它一次,我不能在釋放它之後再次使用它,或者我無法創建新實例並在我離開時打開它我的類的構造函數,甚至isOpened()方法總是返回true(除第一次以外,沒有在相關路徑上創建文件)。在互聯網上找不到任何關於這個奇怪問題的幫助。

任何幫助真的很感激,花了我3個小時,並不明白爲什麼。

+0

你是否在發佈模式下編譯鏈接調試庫,反之亦然?你能否創建一個仍然給你帶來問題的最小可編譯示例(例如一個主函數)? – Micka

+0

@Micka謝謝你的回覆。我發現這是由於缺少opencv_ffmpeg dll,但奇怪的是,它只有一次沒有所需的DLL,我不知道如何。 – Horizon1710

回答

0

我發現這個問題是由於缺少opencv_ffmpeg.dll文件引起的。但對我來說,它仍然很奇怪,它只有一次沒有所需的dll。我不明白如何沒有這個DLL文件工作。