2012-06-21 49 views
5

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.

+0

Una imagen original, la salida que tienes y salida deseada si ha sido cargada sería ideal para esta pregunta –

Respuesta

9

¿Hay alguna forma de determinar la longitud de un contorno?

Sí, puede encontrar la longitud de un contorno con la función estándar de OpenCV, cvarcLength().

Check Documentation here.

+0

Ok .. lo consiguió .. :) pero ¿cómo devolver la longitud? Pensé que devolvería el número de píxeles en los que está compuesto el perímetro de contorno. Así que estaba un poco confundido al notar que el tipo de devolución era doble. – bluechill

+0

Deberá verificar la fuente: http://code.opencv.org/projects/opencv/repository/entry/trunk/opencv/modules/imgproc/src/shapedescr.cpp (Line 45 en adelante) –

+0

También, contornos doesn No tiene todos los puntos de frontera. Para ver lo que tiene, visite aquí: http://opencvpython.blogspot.in/2012/06/hi-this-article-is-tutorial-which-try.html –

Cuestiones relacionadas