2012-09-14 27 views
5

OpenCV2.4 highgui Windowsのビデオキャプチャフレームにバグがありますか?私はプリコンパイルされたライブラリ、私がまとめたものの両方をインストールしOpenCV2.4でビデオキャプチャフレームのバグが発生する可能性があります

、私は完全にすべてをコンパイルすることができ、彼らは画像ベースです

場合、私は私のプログラムを実行することができます。問題は ビデオの場合のみです。常にこの機能でOpenCVのクラッシュ:

virtual IplImage* retrieveFrame(int) 
    { 
     unsigned char* data = 0; 
     int step=0, width=0, height=0, cn=0; 

     if(!ffmpegCapture || 
      !icvRetrieveFrame_FFMPEG_p(ffmpegCapture,&data,&step,&width,&height,&cn)) <-------CRASHES HERE 
      return 0; 
     cvInitImageHeader(&frame, cvSize(width, height), 8, cn); 
     cvSetData(&frame, data, step); 
     return &frame; 
    } 

これは、クラスcap_ffmpeg.cppの内側にあり、VideoCaptureによって呼び出されます。

バージョン2.4.2と2.4.9を試しました。私のprogramesは、cmakeのは/発見を構築していないことが考えられとして重要な(cmakeのでプロジェクトをビルドしopencv2


詳しい情報

  • のWindows 7

  • でfinde働いていました正しいコーデック)

  • VisualStudio 9 2008

  • OpenCVの2.4.2

EDIT

それはどのように私はこの問題を解決し、aviファイルを読むことができるように私のコードを変更することができ、それが実際にbugあるように見えるので、ファイル?

+2

なぜですか?それはソフトウェアです:)あなたの問題のように見えるhttp://code.opencv.org/issues/2115 –

+0

@ Sergey hehe、はい私はそれを信じますが、それは痛みです。私は開発する必要があり、今私はこれと戦わなければなりません...忍耐 –

+0

説明ごとに、あなたは2.4 - > 2.1をダウングレードするか、自分でそれを修正し、他の人を助けるパッチを公開する必要があります:)私の知識ごとに悪いWindows上でffmpegを使うアイデア。 AFAIR OpenCV用のDirectDrawキャプチャであるべきですが、多分私は間違っています。 –

答えて

5

一時的な解決策として、私は、OpenCVがffmpegを使用しないようにビデオを再エンコードすることに決めました。私はVirtualDubマイクロソフトビデオ1圧縮を使用しました。これは "msvidc32.dll"ドライバを使用しています。

これは私のすべてのビデオで動作しますので、WindowsでOpenCVを使用し続けるだけで十分です。

enter image description here

1

私は同様の問題がありました。私はVirtualDubをダウンロードしましたが、そのFMP4エンコードのために私のaviビデオのいずれかを開けませんでした。だから最終的には、問題を解決した解決策は、Windows用のデコーダであるffdshowをインストールすることでした。このリンクを参照してください:http://www.moviecodec.com/video-codecs/fmp4-codec-with-virtualdub-45814/

私はもはや私のビデオを再エンコードするためにVirtualDubを使用する必要はありません!

1

x64を使用している場合。 opencv_ffmpeg245_64.dllを使用してください。これにより問題を解決できる場合があります。 opencv_ffmpeg245_64.dllの名前をopencv_ffmpeg245.dllに変更すると問題が解決する場合があります。

関連する問題