3

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

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

谢谢, 普拉迪普

4

2 回答 2

0

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

于 2011-01-08T21:54:13.433 回答
0

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

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

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

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

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

于 2010-01-13T13:51:24.217 回答