【问题标题】:How to detect vertical and horizontal lines ?如何检测垂直和水平线?
【发布时间】:2013-05-28 08:39:09
【问题描述】:

如何检测垂直和水平线?我知道opencv提供了基于霍夫变换的功能来检测所有方向线,但是计算所有方向线的性能很低,因为我只想检测Ver和Hon线。任何建议,谢谢!

【问题讨论】:

  • 线条是完美的垂直方向还是水平方向? (0度还是90度?)
  • 您可以修改 OpenCV 的 HoughTransform 代码,以便边缘上的每个点仅对有限度数进行投票(例如 0 +- 5 和 90 +- 5),这样您应该获得 180/20 = 9X 的速度-向上。假设您需要更小的内存来保存 Hough 空间,实际加速比 9 倍以上。

标签: image opencv process


【解决方案1】:

HoughLinesP 是最简单的方法。您可以过滤掉非水平或垂直的角度。

但是,如果您想使用仅检测特定角度的可能更快的方法,您可以尝试 cv::Sobel。这里有一些检测垂直和水平边缘的示例代码:

http://subversion.assembla.com/svn/CoffeeWatcher/trunk/ImageUtils.cpp

【讨论】:

  • jspal,代码展示了如何获取边缘而不是获取边缘线。