霍夫变换检测较短的线条

时间:2015-05-30 04:01:38

标签: python opencv computer-vision hough-transform straight-line-detection

我使用opencv hough变换来尝试检测形状。使用HoughLines方法可以很好地检测到较长的行。但是较短的行被完全忽略。 有没有办法检测短线?

我正在使用的代码在本页描述 http://opencv-python-tutroals.readthedocs.org/en/latest/py_tutorials/py_imgproc/py_houghlines/py_houghlines.html

我对房子的角落等线路更感兴趣。 我应该用Hough变换修改哪个参数?或者我应该看一个不同的算法

Hough transform with OpenCV python tutorial

1 个答案:

答案 0 :(得分:3)

在您提供的链接上查看HoughLinesP

import cv2
import numpy as np

img = cv2.imread('beach.jpg')
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
edges = cv2.Canny(gray, 50, 150, apertureSize=3)
minLineLength = 100
maxLineGap = 5
lines = cv2.HoughLinesP(edges, 1, np.pi/180, 50, minLineLength, maxLineGap)
for x1, y1, x2, y2 in lines[0]:
    cv2.line(img, (x1, y1), (x2, y2), (0, 255, 0), 2)
cv2.imwrite('canny5.jpg', edges)
cv2.imwrite('houghlines5.jpg', img)

另请查看Canny生成的边缘图像。您应该只能找到边缘图像中存在线条的线条。

enter image description here

以下是图像上覆盖的线检测输出: enter image description here

使用变量minLineLengthmaxLineGap来获得更理想的输出。这个方法也没有给你HoughLines做的长行,但是看一下Canny图像,首先可能不需要那些长行。