Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Finding length of contour in opencv

This is regarding a project that concerns detection of text in an image using OpenCV in C. The process is to detect the colors inside and outside the corresponding contours and the way to do that is to draw normals on the contours in equal spaced positions and extract the pixel colors in the corresponding positions of the normals end-points.

I am trying to implement this using the following code but it's not working. I mean, its drawing the normals but not in and equi-spaced fashion.

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);
     }
}

So is there a way to find the length of a contour so that I can divide it by the number of normals I want to draw. Thanks in advance.

EDIT: The draw_normal function draws the normals between two points passed to it as parameters.

like image 680
bluechill Avatar asked Jun 21 '12 06:06

bluechill


People also ask

How do you measure contour length in OpenCV?

Contour Perimeter It is also called arc length. It can be found out using cv. arcLength() function.

How do you determine your contour length?

Contour length is equal to the product of the number of segments of polymer molecule(n) and its length(l).

How do you find the area of a contour with OpenCV?

Contour area is given by the function cv. contourArea() or from moments, M['m00'].

How do you find the area of contour in Python?

The paths' vertices attributes then contain the ordered vertices of the contour. Using the vertices you can approximate the contour integral 0.5*(x*dy-y*dx), which by application of Green's theorem gives you the area of the enclosed region.


1 Answers

So is there a way to find the length of a contour?

Yes, you can find length of a contour using OpenCV standard function , cvarcLength().

Check Documentation here.

like image 63
Abid Rahman K Avatar answered Oct 07 '22 10:10

Abid Rahman K