【问题标题】:Finding length of contour in opencv在opencv中查找轮廓的长度
【发布时间】:2012-06-21 06:32:59
【问题描述】:

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

【问题讨论】:

  • 一张原始图片,你得到的输出和上传后想要的输出对于这个问题非常有用

标签: image-processing opencv


【解决方案1】:

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

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

Check Documentation here.

【讨论】:

  • 好的.. 明白了.. :) 但它如何返回长度?我认为它会返回轮廓周长所包含的像素数。所以当我注意到返回类型是双精度时,我有点困惑。
  • 您需要检查来源:code.opencv.org/projects/opencv/repository/entry/trunk/opencv/…(从第 45 行开始)
  • 另外,轮廓没有所有的边界点。要查看它有什么,请访问:opencvpython.blogspot.in/2012/06/…
  • @AbidRahmanK 我们怎样才能找到代表一条线的轮廓点有什么办法吗?
  • @AbidRahmanK 我相信它已重命名为 arcLength
猜你喜欢
  • 2012-11-06
  • 1970-01-01
  • 2012-12-28
  • 1970-01-01
  • 1970-01-01
  • 2021-06-15
  • 2016-08-09
  • 2015-06-24
  • 2016-08-11
相关资源
最近更新 更多