堆腐败 - VS2010

时间:2016-05-10 12:41:57

标签: c++ visual-studio-2010 opencv3.1

我有一个C ++程序,当我运行它时会崩溃。我收到以下错误:

这可能是由于堆损坏,这表示test1.exe或其加载的任何DLL中存在错误。

该程序用于通过相机进纸识别手并检测手的轮廓。

代码:

这是发生崩溃的函数:

void showimgcontours(Mat &threshedimg,Mat &original)
{
  vector<vector<Point> > contours;
  vector<Vec4i> hierarchy;
  int largest_area = 0;
  int largest_contour_index = 0;
  **findContours(threshedimg, contours, hierarchy, CV_RETR_TREE, CV_CHAIN_APPROX_SIMPLE);** //this will find largest contour
  for (int i = 0; i< contours.size(); i++) // iterate through each contour. 
  {
    double a = contourArea(contours[i], false);  //  Find the area of contour
    if (a>largest_area)
    {
        largest_area = a;
        largest_contour_index = i;                //Store the index of largest contour
    }

  }
//search for largest contour has end

  if (contours.size() > 0)
  {
      //drawContours(original, contours,largest_contour_index, CV_RGB(0, 255, 0), 2, 8, hierarchy);
      //if want to show all contours use below one
      drawContours(original,contours,-1, CV_RGB(0, 255, 0), 2, 8, hierarchy);
  }
}

粗体(findContours)是程序中断的地方。

这是调用函数的地方:

    while ((key = waitKey(30)) != 27)
    {
      toggle(key);
      cap >> frame;
      flip(frame, frame, 180);
      cvtColor(frame, hsvframe, COLOR_BGR2HSV);

      inRange(hsvframe, Scalar(H_MIN, S_MIN, V_MIN), Scalar(H_MAX, S_MAX, V_MAX), rangeframe);

      if (domorph)
          morphit(rangeframe);

      if (doblurthresh)
          blurthresh(rangeframe);

      if (showcontours)
          showimgcontours(rangeframe, frame);

      if (showchangedframe)
          imshow("Camera", frame);
      else
          imshow("Camera", rangeframe);

  }
}

当用户按下键“c”时,将调用此函数。 我搜索了解决方案,但没有找到任何有用的东西。 有人请帮助我!

0 个答案:

没有答案