首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >houghlinesp和阈值

houghlinesp和阈值
EN

Stack Overflow用户
提问于 2019-05-13 21:17:34
回答 1查看 825关注 0票数 0

我正在使用opencv Houghlinesp来检测停车场中的线条。这是源图像

当我做hough变换-p来检测线条时,我得到了像这样的最终图像。

它确实检测到了空格。你知道如何去除汽车顶部的这些嘈杂的线条吗?或者任何关于替代算法或方法的方向都值得高度赞赏。

代码语言:javascript
复制
img = cv.imread('Parking-Lot.jpg')
threshold=100
minLineLength = 60
rho=2
maxLineGap=20
theta = np.pi/180
edges = cv.Canny(img, 100, 200)
lines = cv.HoughLinesP(edges, rho, theta, threshold, np.array([]), minLineLength =minLineLength , maxLineGap=maxLineGap)
 for i in range(len(lines)):
    for line in lines[i]:
        cv.line(img, (line[0],line[1]), (line[2],line[3]), (0,255,0), 2)
cv2.imwrite("lines.jpg", img)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-05-13 22:55:47

在应用边缘检测之前,可以通过对图像进行阈值处理来消除大部分噪声。这样,您将删除(大部分)汽车,并保留您感兴趣的空白线条:

代码语言:javascript
复制
import cv2
import numpy as np

img = cv2.imread('Parking-Lot.jpg')
threshold=100
minLineLength = 60
rho=2
maxLineGap=20
theta = np.pi/180

# here you convert the image to grayscale and then threshhold to binary
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
ret,thresh = cv2.threshold(gray,180,255,cv2.THRESH_BINARY)

# continue with the threshholded image instead
edges = cv2.Canny(thresh, 100, 200)
lines = cv2.HoughLinesP(edges, rho, theta, threshold, np.array([]), minLineLength =minLineLength , maxLineGap=maxLineGap)
for i in range(len(lines)):
  for line in lines[i]:
     cv2.line(img, (line[0],line[1]), (line[2],line[3]), (0,255,0), 2)
cv2.imwrite("lines.jpg", img)

这将为您带来更清晰的结果:

您可以随意尝试阈值参数;您将需要找到一个阈值,该阈值可以排除大多数汽车,同时保留所有要检测的线路。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56113213

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档