python - 霍夫变换检测较短的线

标签 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

最佳答案

在您提供的链接上查看 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 图像,也许这些长线一开始就不受欢迎。

关于python - 霍夫变换检测较短的线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30542100/

相关文章:

Mat的C++代码转换

python - 我是否必须验证每个请求的 JWT token ?

c++ - 是否可以根据眼睛和嘴巴的位置确定面部的偏航、俯仰和滚动? (含图片)

iphone opencv - 模板匹配

opencv - 从热图计算离散点

opencv - 检测视频流中的 “noise” (“snow”,绿色 block ,部分帧失真等)

Python 3 打印utf-8 编码字符串问题

python - 装饰属性 : right order

python - 如何每次都得到一个随机列表?

c++ - 将矩阵类转换为 IplImage*