Python и OpenCV — доминирующая линия в преобразовании Hough Line

Для моей программы, используя OpenCV и Python, я пытаюсь обнаружить дорожные полосы. Чтобы добиться этого, я использовал Hough Line Transform для обнаружения линий. Однако он находит много строк рядом друг с другом, и я пытаюсь найти способ сделать среднюю линию, которая находится между всеми этими другими строками. Советы?

Вот мой код:

    import numpy as np
    import cv2

    cap = cv2.VideoCapture('CVfootage.mov')

    while(True):
        ret, frame = cap.read()
        frame = frame[200:720, 0:1280]    
        gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
        blur = cv2.GaussianBlur(gray,(7,7),0)
        edges = cv2.Canny(blur, 50, 150)

        lines = cv2.HoughLinesP(image=edges,rho=1,theta=np.pi/180, threshold=100,lines=np.array([]), minLineLength=100,maxLineGap=80)

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

        cv2.imshow('edges', edges)
        cv2.imshow('hough', blur)

        if cv2.waitKey(1) & 0xFF == ord('q'):
            break

    cap.release()
    cv2.destroyAllWindows()

person Andy M    schedule 02.02.2017    source источник
comment
Трудно представить то, что вы имеете в виду, как много строк рядом с каждой, не визуализируя пример. Вы имеете в виду, что пороговое значение не работает должным образом?   -  person NAmorim    schedule 02.02.2017


Ответы (1)


вам нужно настроить параметр функции houghlinesP

если вы хотите меньше строк рядом друг с другом: увеличьте 'rho'

если вы хотите меньше строк в целом: увеличьте порог

person M.Sabaa    schedule 02.02.2017