2013-01-05 60 views
1

我花了幾個小時試圖用CvVideoWriter寫一個avi文件。我總是得到一個大小爲5.54KB的文件,並且沒有框架。我檢查了CvVideoWriter是不是null,它不是。我也試圖用cvShowImage來顯示我的IplImage,它顯示正確。我嘗試了多個編解碼器(DIVX,H264,..)。OpenCV的cvWriteFrame(..)什麼都不做

我發現,雖然當VideoWriter這樣定義的函數保存在JPG文件框架:

CvVideoWriter* recorder = cvCreateVideoWriter("test0001.jpg", CV_FOURCC('I', 'Y', 'U', 'V'), -1, Size(w,h), true); 

這是我的計劃:

IplImage* myIplFrame=...; 
CvVideoWriter* recorder = cvCreateVideoWriter("test.avi", CV_FOURCC('I', 'Y', 'U', 'V'), 10, Size(w,h), true); 

cvShowImage("test",myIplFrame); //showing image properly 
cvWriteFrame(recorder, myIplFrame); 
cvWaitKey(500); //not helping 

cvReleaseVideoWriter(&recorder); 

我在做什麼錯?

+0

同樣的問題... –

回答

0

我在SO上發現了另一個類似的線程,有人提到你應該使用MinGW而不是VS編譯。我這樣做,其中包括新的庫和包含在.pro文件中像這樣的路徑(QT):

INCLUDEPATH += C:\OpenCV-2.3.1\mingwBuild\install\include 

LIBS += -LC:\\OpenCV-2.3.1\\opencv\\build\\x86\\mingw\\lib \ 
    -lopencv_core231 \ 
    -lopencv_highgui231 

注意我是如何使用的庫從opencv文件夾;那就是帶有源文件夾的文件夾,例如在您用CMake進行配置和生成之後。

另一個提示你,讀者,有同樣的問題是,如果CV ::墊無法識別,或者你會得到關於它的一些奇怪的錯誤 - 未定義(simpleFree功能或類似的東西,不記得了)例如

希望它有幫助。

1

IYUV編解碼器應該是內置的,因此videowriter總是可以創建這種類型的文件。

您可以創建一個文件,所以權限是正確的。

是否有一個很好的理由,你使用舊的iplimage而不是cv標準格式?
這是我要檢查的第一件事。

http://docs.opencv.org/

PS。如果不顯示圖像,則不需要waitkey()。

+0

這是一個答案...? –

+0

我剛想通了,我不得不用MinGW重新編譯OpenCV並從那裏使用庫。我也使用了像cv :: Mat和更新的函數這樣的新格式,它現在正在工作(只是想通了):) –

+0

@ LightnessRacesinOrbit-這是一組關於接下來要嘗試什麼的建議,對於有同樣問題的人也很有用 –