在opencv中查找轮廓的长度

时间:2012-06-21 06:32:59

标签: image-processing 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);
     }
}

那么有没有办法找到轮廓的长度,以便我可以将它除以我想要绘制的法线数。提前谢谢。

编辑:draw_normal函数绘制传递给它的两个点之间的法线作为参数。

1 个答案:

答案 0 :(得分:10)

  

那么有没有办法找到轮廓的长度?

是的,您可以使用OpenCV标准函数cvarcLength()找到轮廓的长度。

Check Documentation here.

相关问题