9

这是关于一个项目,该项目涉及在 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 函数在作为参数传递给它的两点之间绘制法线。

4

1 回答 1

13

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

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

在此处检查文档。

于 2012-06-21T06:49:08.470 回答