Коррупция кучи — VS2010

У меня есть программа на 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);

}
}

Эта функция вызывается, когда пользователь нажимает клавишу «с».
Я гуглил решения, но не нашел ничего, что могло бы помочь.
Кто-нибудь, пожалуйста, помогите мне!

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]