7

OpenCV2.4.2 をインストールし、CMake を使用して OpenCV プロジェクトを作成しました。コンパイルエラーは発生しません。画像を処理するための関数がいくつかあり、2 つのアプリケーションがあります。

1- ビデオからのデータを処理します

2- シミュレートされたデータを処理します。

どちらのアプリケーションも、ビデオからのデータ抽出を除いて同じです。

問題: ビデオを処理するアプリケーションがクラッシュします。

program.exe の 0x75d8a048 で未処理の例外が発生しました アクセス違反の読み取り場所 0x049f08c0。

フレームを読み取るときに、コードのこの部分でクラッシュします。

cv::VideoCapture _video;
while(1) 
{       
        // grab the frame
        _video >> frame;  <-------------CRASHES HERE
                processFrame(frame);
}

cv::VideoCaptureしたがって、OpenCV 2.4.2 のクラスに問題がある可能性があると思います。問題を検出して解決するにはどうすればよいですか?

編集

ビデオカメラを使用して、エラーメッセージをキャッチすることができました:

OpenCV Error: Assertion failed (m.dims >= 2) in unknown function, file ..\..\..\
src\opencv\modules\core\src\matrix.cpp, line 268
OpenCV Error: Assertion failed (0 <= _rowRange.start && _rowRange.start <= _rowR
ange.end && _rowRange.end <= m.rows) in unknown function, file ..\..\..\src\open
cv\modules\core\src\matrix.cpp, line 283
4

1 に答える 1

4

キャプチャが実際にファイル/カメラを開いたかどうかを確認していますか?

    if(_video.isOpened()) {  // check if capture succeeded
      // do stuff
    }

デフォルトでは、すべてのコーデックがサポートされているわけではありません。これは、ビデオを開くために使用するライブラリによって異なります。(これは ffmpeg または quicktime の可能性があります)。

また、将来の問題に備えて、自分で例外をキャッチすることもできます

try {
    _video >> frame;
} catch (cv::Exception) {
    cout << "An exception has accurred" << endl;
};
于 2012-09-10T13:44:13.030 に答える