2010-01-08 59 views
3

我成功地能够将图像中的发束检测为线条。我看到输出图像将每根头发检测为线。我使用cvHoughLines2(),方法参数为CV_HOUGH_PROBABILISTIC如何统计OpenCV中的行数(Hough Trasnform)

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

感谢, 普拉迪普

+0

你能算清发线吗? @pradeep – 2016-10-10 07:48:56

回答

0

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

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

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

这是在OpenCV中实现的cvCanny()函数。利用threshold1threshold2参数(第3个和第4个参数)的值来实现检测和跟踪。对于实际的线条计数,我不知道如何最好地解决这个问题(Canny输出与Hough变换输出有些不同),但是您可能会发现使用独特的实心边缘比使用Hough变换输出更容易碎片化的线参数组。

0

hough函数应该在OpenCV2中返回一个向量,或者在OpenCV1中返回一个CvSeq。你可以很容易地获得它们的长度并遍历它们。有关更多详细信息,请参阅OpenCV文档中的示例代码。