OpenCV C ++崩溃了

时间:2013-01-22 07:26:30

标签: c++ opencv crash

我正在使用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;
  }

}

该程序有效,但退出时会出现如下错误:Unhandled exception at 0xfeeefeee in {prog_name}.exe: 0xC0000005: Access violation reading location 0xfeeefeee.,它将指向第568行的crtexe.c

if (has_cctor == 0)
  _cexit();

知道导致问题的原因吗?提前谢谢。

PS:目前正在使用OpenCV 2.3.4和VS C ++ 2010 Exp。在Windows XP上。

PSS:AFAIK每个类/指针(包括摄像头)将在退出时被取消初始化/销毁。如果我错了,请纠正我。

更新(1):即使在adding some lines into it之后仍然出现错误。

更新(2):为每一行尝试过DEBUG,仍然没有任何结果。尝试delete函数释放资源,但找不到任何指针将其与delete一起使用。

更新(3):似乎我使用OpenCV C++制作的每个视频处理程序都会在退出时崩溃,即使是我从书籍/互联网上复制粘贴的程序。使用break更改return -1,仍然崩溃......

更新(4):我在另一台PC上尝试了我的程序(Ms VS 2010 Pro,Windows Vista 64b)并猜测是什么,崩溃。我的电脑设置肯定有问题...

0 个答案:

没有答案