5

ウィンドウでビデオからフレームをキャプチャするためのOpenCV2.4 highguiにバグがあるのでしょうか?

プリコンパイルされたライブラリと私がコンパイルしたライブラリの両方をインストールしました。すべてを完全にコンパイルでき、次の場合にプログラムを実行できます

それらは画像ベースです。問題はビデオのみです。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 を試しました。私のプログラムはopencv2で動作していました


詳しくは

  • ウィンドウズ7

  • cmake を使用してプロジェクトをビルドします (cmake が適切なコーデックをビルド/検出していない可能性があるため、重要です)。

  • VisualStudio 9 2008

  • OpenCV 2.4.2

編集

実際にはバグのようですが、どうすればこの問題を解決し、avi ファイルを読み取れるようにコードを変更できますか?

4

3 に答える 3

5

一時的な解決策として、OpenCV が ffmpeg を使用しないように、ビデオを再エンコードすることにしました。「msvidc32.dll」ドライバーを使用するMicrosoft ビデオ 1圧縮でVirtualDubを使用しました。

私のすべてのビデオで動作するので、Windows で OpenCV を使い続けることができるので、これで十分です。

ここに画像の説明を入力

于 2012-09-17T07:57:15.203 に答える
1

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

于 2013-09-23T10:46:43.020 に答える
1

同様の問題がありました。VirtualDub をダウンロードしましたが、FMP4 エンコードが原因で、avi ビデオの 1 つを開けませんでした。結局、問題を解決した解決策は、Windows用のデコーダーであるffdshowをインストールすることでした。このリンクを参照してください: http ://www.movi​​ecodec.com/video-codecs/fmp4-codec-with-virtualdub-45814/

これで、VirtualDub を使用してビデオを再エンコードする必要がなくなりました。

于 2013-01-02T20:07:42.373 に答える