这个LSD https://github.com/primetang/pylsd是封装好的,不知道哪儿改参数,原始的LSD检测前会将图片缩小至80%,当图片很小是,之后检测的线会减少。
可以直接用opencv-python里面的createLineSegmentDetector()函数,用help查看用法,再根据需要修改参数。我这边选择检测前不缩放,那么_scale=1
LSD代码:
img = cv2.imread(imagepath, cv2.IMREAD_COLOR)
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
lsd = cv2.createLineSegmentDetector(0, _scale=1)
dlines = lsd.detect(gray)
for dline in dlines[0]:
x0 = int(round(dline[0][0]))
y0 = int(round(dline[0][1]))
x1 = int(round(dline[0][2]))
y1 = int(round(dline[0][3]))
cv2.line(img, (x0, y0), (x1,y1), 255, 1, cv2.LINE_AA)
cv2.imwrite('./lines.png', img)
也参考opencv:cv::LineSegmentDetector Class Reference
https://docs.opencv.org/trunk/db/d73/classcv_1_1LineSegmentDetector.html