我有一个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”时,将调用此函数。 我搜索了解决方案,但没有找到任何有用的东西。 有人请帮助我!