2010-07-18 104 views
2

我試圖在OpenCV 2.1,VS2008標準中讀取avi文件2天,但沒有運氣。我在程序控制臺中不斷收到此消息:Visual Studio 2008未對齊堆棧變量?

編譯器未對齊堆棧變量。 Libavcodec已被編譯錯誤 並可能非常緩慢或崩潰。這不是libavcodec, 中的錯誤,而是編譯器中的錯誤。您可以嘗試使用gcc> = 4.2進行重新編譯。 不要向FFmpeg開發人員報告崩潰。

..而我得到的幀率是0.5fps的播放。我嘗試了各種AVI和MPEG文件,仍然有相同的結果。另外,使用網絡攝像頭的例子非常緩慢。使用OpenCV的1.1的時候,我沒有這樣的問題

事情我已經嘗試過解決這個問題:

  • 重新編譯整個庫
  • 從SVN更新了圖書館,並重新編譯
  • libavcodec.a文件的嘗試了各種版本

我使用讀取文件的代碼看起來是這樣的:

CvCapture* input_video = cvCreateFileCapture("c:\\data\test.avi"); 
// ... 
while (true) { 
    // ... 
    frame = cvQueryFrame(input_video); 
    cvShowImage("test", frame); 
    // ... 
} 

任何人都可以幫助我嗎?這是推動我堅果:(

+0

請找出用於編譯相關代碼的編譯器選項,並將其發佈到此處。 – 2010-07-21 02:00:56

回答

1

好了,你也應該檢查cvCaptureFromAVI()來代替cvCreateFileCapture()。也許這是一個好主意。

但我肯定會重新編譯庫。嘗試添加在此選項配置: --enable-力堆棧重新調整--enable-包括memalign - 黑客

這些傢伙似乎已經解決了這個問題: http://ffmpeg.arrozcru.org/forum/viewtopic.php?f=9&t=568

如果什麼都行不通,爲什麼不嘗試Windows預編譯的二進制文件? http://sourceforge.net/projects/opencvlibrary/files/opencv-win/2.1/

無論如何,你的問題是軟件特定的。我強烈建議你在適當的郵件列表和OpenCV相關論壇中尋找答案。

+0

預編譯的二進制文件通常使用mingw編譯,鏈接ming/vs編譯碼器時會發現此問題。 – 2010-07-20 23:29:25

+0

MingW編譯的二進制文件與其他文件一樣好。使用上面提到的標誌重新編譯源代碼時發生了什麼?讓我們知道。 – karlphillip 2010-07-21 01:16:38

+0

感謝您的答案。我決定使用1.1版本而不是2.0版本,因爲它適用於我,並具有我需要的功能,而且我不想在此問題上花費更多時間。乾杯 – janek 2010-07-22 22:31:55