Это касается проекта, который касается обнаружения текста в изображении с использованием OpenCV в C. Процесс заключается в обнаружении цветов внутри и вне соответствующих контуров, а способ сделать это - рисовать нормали на контурах в равных промежутках и извлекать цвета пикселей в соответствующих положениях конечных точек нормалей.Поиск длины контура в opencv
Я пытаюсь реализовать это, используя следующий код, но он не работает. Я имею в виду, что он рисует нормали, но не равномерно и равномерно.
for(; contours!=0 ; contours = contours->h_next)
{
CvScalar color = CV_RGB(rand()&255, rand()&255, rand()&255);
cvDrawContours(cc_color, contours, color, CV_RGB(0,0,0), -1, 1, 8, cvPoint(0,0));
ptr = contours;
for(i=1; i<ptr->total; i++)
{
p1 = CV_GET_SEQ_ELEM(CvPoint, ptr, i);
p2 = CV_GET_SEQ_ELEM(CvPoint, ptr, i+1);
x1 = p1->x;
y1 = p1->y;
x2 = p2->x;
y2 = p2->y;
printf("%d %d %d %d\n",x1,y1,x2,y2);
draw_normals(x1,y1,x2,y2);
}
}
Так есть ли способ, чтобы найти длину контура, так что я могу разделить его на число нормалей, которые я хочу сделать. Заранее спасибо.
EDIT: функция draw_normal рисует нормали между двумя пунктами, переданными ей как параметры.
Исходное изображение, выход вы получили и желаемый результат, если загружен бы здорово на этот вопрос –