1

OpenCV を使用して、単純なバックグラウンド減算プログラムに取り組んでいBackgroundSubtractorMOG2ます。コード:

int main()
{
  VideoCapture cap(0); // open the default camera
  if(!cap.isOpened())  // check if we succeeded
      return -1;

  Mat frame,foreground,image,edges;
  BackgroundSubtractorMOG2 mog;
  namedWindow("Capture", CV_WINDOW_AUTOSIZE);
  namedWindow("Contours", CV_WINDOW_AUTOSIZE);

  while(1)
  {
    cap >> frame; // get a new frame from camera
    if( frame.empty() )
        break;
    image=frame.clone();
    mog(frame,foreground,-1);

    threshold(foreground,foreground,1,250,THRESH_BINARY);
    medianBlur(foreground,foreground,9);
    erode(foreground,foreground,Mat());
    dilate(foreground,foreground,Mat());

    imshow( "Capture",image );
    imshow("Contours",foreground);

    if(waitKey(30) >= 0) break;
  }

}

プログラムは動作しますが、終了時に次のようなエラーが発生し、568 行Unhandled exception at 0xfeeefeee in {prog_name}.exe: 0xC0000005: Access violation reading location 0xfeeefeee.目を指します。crtexe.c

if (has_cctor == 0)
  _cexit();

問題の原因は何ですか?前もって感謝します。

PS: 現在 OpenCV 2.3.4 と VS C++ 2010 Exp を使用しています。Windows XP で。

PSS:カメラを含む各クラス/ポインターは、終了時に初期化解除/破棄されることがわかります。間違っていたら訂正してください。

Updates(1) :いくつかの行を追加した後でもエラーが発生します。

Updates(2) : すべての行で DEBUG を試しましたが、まだ何も得られませんでした。リソースを解放する機能を試行deleteしましたが、 で使用するポインタが見つかりませんdelete

更新 (3) : 私が使用して作成したすべてのビデオ処理プログラムはOpenCV C++、本やインターネットからコピーして貼り付けたものであっても、終了時にクラッシュするようです。で変更breakしましたがreturn -1、まだクラッシュします...

更新 (4) : 別の PC (Ms VS 2010 Pro、Windows Vista 64b) でプログラムを試してみましたが、クラッシュは発生しませんでした。明らかにパソコンの設定がおかしい…

4

0 に答える 0