2016-12-07 1 views
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

Как это сделать?

+0

Um, цикл ** не ** "перебирает" defectArray' ". Он выполняет итерацию по номерам от 0 до <количества вещей в массиве минус 1>. Сколько вещей в массиве, и как вы перебираете диапазон чисел? – immibis

ответ