Esto se refiere a un proyecto que concierne a la detección de texto en una imagen usando OpenCV en C. El proceso consiste en detectar los colores dentro y fuera de los contornos correspondientes y la forma de hacerlo es dibujar normales en los contornos en posiciones equidistantes y extraiga los colores de los píxeles en las posiciones correspondientes de los puntos finales normales.Hallando la longitud del contorno en opencv
estoy tratando de poner en práctica esta usando el siguiente código, pero que no está funcionando. Quiero decir, está dibujando las normales pero no en forma equidistante.
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);
}
}
Entonces, ¿hay una manera de encontrar la longitud de un contorno de modo que pueda dividirlo por el número de normales quiero llamar. Gracias por adelantado.
EDIT: La función draw_normal dibuja las normales entre dos puntos que se le pasan como parámetros.
Una imagen original, la salida que tienes y salida deseada si ha sido cargada sería ideal para esta pregunta –