【问题标题】:How to count number of lines (Hough Trasnform) in OpenCV如何计算 OpenCV 中的行数(霍夫变换)
【发布时间】:2010-01-08 08:11:34
【问题描述】:

我成功地将图像中的发丝检测为线条。我看到输出图像将每根头发检测为线。我使用cvHoughLines2(),方法参数为CV_HOUGH_PROBABILISTIC

现在我想数一下这些行。输出图像在每根头发上显示 1 或 2 条线。我看到每条线都由小线段组成。所以很难直接得到他们的总数。 对此有何建议?

谢谢, 普雷迪普

【问题讨论】:

  • 你会数发际线吗? @pradeep

标签: opencv line hough-transform


【解决方案1】:

实际上,使用 Canny 边缘检测器可能会更好。根据您的描述,它似乎比霍夫变换有几个关键优势:

  • 响应任意形状的轮廓,而不仅仅是直线;
  • 执行降噪和非最大抑制以最小化响应;和
  • 使用更宽松的阈值进行第二次检测以“跟踪”或“固化”边缘。

如果参数正确,它可能能够用一条连续的线唯一地检测每根头发。

这是在 OpenCV 中的 cvCanny() 函数中实现的。使用threshold1threshold2 参数(第3 个和第4 个参数)的值来试验检测和跟踪。

至于实际计算行数,我不确定如何最好地处理这个问题(Canny 输出与 Hough 变换输出的形式有些不同),但您可能会发现使用独特的实心边缘比使用碎片化更容易线参数集。

【讨论】:

    【解决方案2】:

    hough 函数应该在 OpenCV2 中返回一个向量,或者在 OpenCV1 中返回一个 CvSeq。您可以轻松获取它们的长度并遍历它们。有关详细信息,请参阅 OpenCV 文档中的示例代码。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-10-05
      • 1970-01-01
      • 1970-01-01
      • 2018-01-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多