如何计算OpenCV中的行数(Hough变换)

时间:2010-01-08 08:11:34

标签: opencv line hough-transform

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

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

谢谢, 普拉迪普

2 个答案:

答案 0 :(得分:0)

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

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

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

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

至于实际计算线条,我不确定如何最好地处理这个(Canny输出与Hough变换输出有点不同),但是您可能会发现使用独特的实体边缘比使用碎片更容易一组线参数。

答案 1 :(得分:0)

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