2

OpenCV 2.1、VS2008 標準で avi ファイルを 2 日間読み込もうとしていますが、うまくいきません。プログラムコンソールに次のメッセージが常に表示されます。

コンパイラがスタック変数を整列しませんでした。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); 
    // ...
}

誰でも私を助けることができますか?これは私を夢中にさせています:(

4

1 に答える 1

1

cvCreateFileCapture() を置き換えるには、cvCaptureFromAVI() もチェックする必要があります。多分それは良い考えです。

しかし、私は間違いなくライブラリを再コンパイルします。configure に次のオプションを追加してみてください: --enable-force-stack-realignまたは--enable-memalign-hack

これらの人はそれを解決したようです: http://ffmpeg.arrozcru.org/forum/viewtopic.php?f=9&t=568

何も機能しない場合は、コンパイル済みの Windows 用バイナリを試してみませんか? http://sourceforge.net/projects/opencvlibrary/files/opencv-win/2.1/

とにかく、あなたの質問はソフトウェア固有です。対応するメーリング リストや OpenCV 関連のフォーラムで回答を探すことを強くお勧めします。

于 2010-07-20T23:25:14.923 に答える