0
Я использую код от this siteКак перебирать malloc? (opencv)
Однако есть ошибка в коде, где часть его удалена.
Вот соответствующая часть кода
CvConvexityDefect* defectArray;
for (; defects; defects = defects->h_next)
{
int nomdef = defects->total; // defect amount
//outlet_float(m_nomdef, nomdef);
//printf(" defect no %d \n",nomdef);
if (nomdef == 0)
continue;
// Alloc memory for defect set.
//fprintf(stderr,"malloc\n");
defectArray = (CvConvexityDefect*)malloc(sizeof(CvConvexityDefect)*nomdef);
// Get defect set.
//fprintf(stderr,"cvCvtSeqToArray\n");
cvCvtSeqToArray(defects, defectArray, CV_WHOLE_SEQ);
// Draw marks for all defects.
//THIS IS WHERE THE MISTAKE IS
for (int i = 0; //THE REST OF THIS LINE IS MISSING
{ printf(" defect depth for defect %d %f \n",i,defectArray[i].depth);
cvLine(img_8uc3, *(defectArray[i].start), *(defectArray[i].depth_point),CV_RGB(255,255,0),1, CV_AA, 0);
cvCircle(img_8uc3, *(defectArray[i].depth_point), 5, CV_RGB(0,0,164), 2, 8,0);
cvCircle(img_8uc3, *(defectArray[i].start), 5, CV_RGB(0,0,164), 2, 8,0);
cvLine(img_8uc3, *(defectArray[i].depth_point), *(defectArray[i].end),CV_RGB(255,255,0),1, CV_AA, 0);
}
Как вы можете видеть, часть для цикла отсутствует. Я не могу понять, как завершить цикл for так, чтобы он повторялся более defectArray
Как это сделать?
Um, цикл ** не ** "перебирает" defectArray' ". Он выполняет итерацию по номерам от 0 до <количества вещей в массиве минус 1>. Сколько вещей в массиве, и как вы перебираете диапазон чисел? – immibis