求等高线开放长度

2024-06-14 07:25:13 发布

您现在位置:Python中文网/ 问答频道 /正文

这是一个关于使用OpenCV在C中检测图像中文本的项目。该过程是检测对应轮廓内外的颜色,其方法是在等距位置的轮廓上绘制法线,并在法线端点的相应位置提取像素颜色。

我试图用下面的代码实现它,但它不起作用。我是说,它画的是法线,但不是等距的。

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函数将传递给它的两点之间的法线绘制为参数。


Tags: 颜色cvcolor轮廓x1x2p2p1