【问题标题】:How do I get HoughLines to recognize the rest of the lines in this picture?如何让 HoughLines 识别这张图片中的其余线条?
【发布时间】:2015-08-29 02:38:20
【问题描述】:

在下图中,您可以看到我能够很好地识别水平线,但垂直线的识别效果不是很好。特别是,没有看到网格的中间线,并且边线被透支(即相互连接)。

这是创建它的代码:

img = cv2.imread('./p6.png')
gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
threshhold, threshhold_img = cv2.threshold(gray, 0, 255, cv2.THRESH_BINARY + cv2.THRESH_OTSU)
edges = cv2.Canny(threshhold_img, 150, 200, 3, 5)
lines = cv2.HoughLinesP(edges,1,np.pi/180,500, minLineLength = 600, maxLineGap = 75)[0].tolist()

for x1,y1,x2,y2 in lines:
    cv2.line(img,(x1,y1),(x2,y2),(0,255,0),1)

当我调整了不同的参数时,我最终会遇到这样一种情况,即最中间的垂直线(表格中 JEXXY 之前的那一条)从底部延伸到第三条的顶部网格。除非我将参数放宽到几乎每条线都被绘制出来,包括代表前三个网格顶部的yiersan 的线,否则我无法获得代码来查看定义的中间垂直线网格内部。

我该如何解决这个问题?

* 更新为使用 THRESH_BINARY_INV 而无需精明 *

img = cv2.imread('./p6.png')
gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
threshhold, threshhold_img = cv2.threshold(gray, 0, 255, cv2.THRESH_BINARY_INV)
lines = cv2.HoughLinesP(edges,1,np.pi/180,500, minLineLength = 600, maxLineGap = 75)[0].tolist()

for x1,y1,x2,y2 in lines:
    cv2.line(img,(x1,y1),(x2,y2),(0,255,0),1)

* 更新:使用 BINARY 和 OTSU 添加阈值 img *

【问题讨论】:

  • 你可以在不使用 canny 的情况下尝试 THRESH_BINARY_INVERSE 吗? (请显示并发布中间结果)
  • 你把它和OTSU结合了吗?阈值根本没有线条...您可以发布阈值的结果图像,threshhold_img = cv2.threshold(gray, 0, 255, cv2.THRESH_BINARY + cv2.THRESH_OTSU) 吗?

标签: python opencv hough-transform canny-operator


【解决方案1】:

我认为在您的情况下发生的情况是,很难找到一组参数可以同时创建水平线和垂直线,而某些线不会从其他线“窃取”选票。你可以在这里做一个快速的技巧,只强制检测垂直线,然后关注你的主要水平线:

# Vertical lines
lines = cv2.HoughLinesP(
    threshhold_img, 1, np.pi, threshold=100, minLineLength=100, maxLineGap=1)

# Horizontal lines
lines2 = cv2.HoughLinesP(
    threshhold_img, 1, np.pi / 2, threshold=500, minLineLength=500, maxLineGap=1)

这给了我:

【讨论】:

  • 我同意这可能是主要问题,但我无法理解您所做的工作就像您展示的那样。这真的是你使用的参数并且超过了threshold_img吗?
  • threshold_img 在我的例子中是一种从你得到的图像中获取二进制图像的方法。这并不是那么相关。相关部分运行 houghlinesp 两次,第一次是与垂直线的角度受限。
  • 好吧,我明白了。我尝试使用您的参数(和其他一些参数),但无法获得您所做的结果。我想知道你是否做了一些我没有看到的不同的事情。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-05-02
  • 1970-01-01
  • 1970-01-01
  • 2020-01-20
  • 1970-01-01
  • 1970-01-01
  • 2013-10-06
相关资源
最近更新 更多