我的图像是一张简单的图片,我想提取线条的终点。但是,还有其他线条重叠,因此,我的线条有“间隙”。在他们中。
我正在尝试使用HoughLinesP来提取这十行的参数化,虽然视觉效果合理,但仍然给出了43条单独的行。
我已经尝试平滑线条,线条的骨架表示,重新绘制每条线之后的线条,我现在正在使用countours。我已经调整了我的参数(行长,最大间隙,阈值等等),我无法将其减少到十行。在我当前的代码中,我从自身中减去第一个图像以创建一个新的黑色空间来绘制我的HoughLines,可能不是最有效的,但它有效。这是我的代码:
import numpy as np
import cv2
img = cv2.imread('masked.png')
gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
edges = cv2.Canny(gray,50,150,apertureSize = 3)
minLineLength = 100
img2 = cv2.subtract(img, img)
lines = cv2.HoughLinesP(gray,1,np.pi/180,10,minLineLength,maxLineGap=100)
print(len(lines))
for n in range(len(lines)):
for x1,y1,x2,y2 in lines[n]:
cv2.line(img2,(x1,y1),(x2,y2),(0,255,0),1,4)
cv2.imshow('result.png', img2)
cv2.waitKey(0)
cv2.destroyAllWindows()
是否有另一种方法可以让我填补这些空白并拉出十个线方程?我现在正在使用Python,OpenCV和Numpy。