друзья, я кодирую с помощью opencv. Я хочу найти три больших контура в картинке/видео, у меня есть код, который может найти два больших контура, мне трудно найти третий по величине, поэтому мне нужны ваши предложения, с Рождеством! Вот мой основной код, как его изменить.Найдите три самых больших контура (доведите до двух)
CvSeq *cont = 0
cvFindContours(tempImg, storage, &cont, sizeof(CvContour),
CV_RETR_TREE, CV_CHAIN_APPROX_SIMPLE, cvPoint(0,0));
CvSeq *contmax = 0;
CvSeq *contmax2 = contmax;
for(;cont;cont = cont->h_next) //get the two max area, and mark
{
area = fabs(cvContourArea(cont, CV_WHOLE_SEQ));
printf("area == %lf\n", area);
if(area > maxArea)
{
contmax2 = contmax;
max2Area = maxArea;
contmax = cont;
maxArea = area;
}
else if(area > max2Area && area < maxArea)
{
contmax2 = cont;
max2Area = area;
}
}
CvRect aRect = cvBoundingRect(contmax, 0);
CvRect bRect = cvBoundingRect(contmax2, 0);
Можете ли вы дать нам пример ввода и вывода и способ компилировать и выполнять сами свою программу? –
О, это очень длинный код, я пишу программу для видения робота. Я скомпилирую его с помощью gcc в Linux. вы можете принять tempImg в качестве входных данных. – Dashu
Было бы очень полезно, чтобы мы могли скомпилировать что-то, чтобы мы могли его отлаживать. –