Получить выпрямить SVG от HoughLinesP - PullRequest
0 голосов
/ 09 июля 2019

Я хочу получить список прямых линий с координатами начала и конца каждого пути.


С помощью canny и sift я получаю координаты, но без порядка это бесполезно для меня

Imgur


Поэтому я решил нарисовать линии через HoughLinesP, но как я могу разделить линии и получить их координаты?


img = cv2.imread(path)
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)


contours, hierarchy = cv2.findContours(
    # gray, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_NONE)
    # gray, cv2.RETR_TREE, cv2.CHAIN_APPROX_NONE)
    gray, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)


canny = cv2.Canny(gray, 50, 200)
cv2.imshow("canny", canny)
# cv2.imwrite(path[:-4] + '.png', canny)

lines = cv2.HoughLinesP(image=canny,
                        rho=1,
                        theta=np.pi/180,
                        threshold=10,
                        lines=np.array([]),
                        minLineLength=50/2,
                        maxLineGap=260
                        )

a, b, c = lines.shape
for i in range(a):
    cv2.line(img,
             (lines[i][0][0], lines[i][0][1]),
             (lines[i][0][2], lines[i][0][3]),
             (0, 0, 255),
             2,
             cv2.LINE_AA
             )

cv2.imshow('houghlines', img)
...