Как найти пересечение прямых линий с Hough Peaks? - PullRequest
0 голосов
/ 22 ноября 2018

Я разрабатываю метод локализации номерного знака и, в конечном итоге, применения преобразования перспективы для выпрямления пластины по горизонтали.

В настоящее время мой конвейер обработки изображений может приблизительно определить местонахождение пластины, но я бы хотел сузить егов дальнейшем.Я применил обнаружение краев, морфологические операции и анализ связанных компонентов, чтобы добраться до этой стадии.

Мой результат для обнаружения номерного знака в настоящее время таков:

enter image description here

Я пытаюсь реализовать HoughLinesP, чтобы найти прямые линии шрифтов изатем найдите пересечение линий с HoughPeaks, как это

enter image description here

Моя текущая попытка найти линии жесткости показана в коде ниже.Тем не менее, кто-нибудь может подсказать мне, как найти крутые пики?Я провел некоторые исследования в Интернете и не смог найти надежных ссылок.

def findHoughLines(self, image):
    from src.Line import Line

    # Add 1 channel to binary image
    image = image[..., np.newaxis]
    vis = cv2.cvtColor(image, cv2.COLOR_GRAY2BGR)

    canny = cv2.Canny(image, 100, 200)

    cv2.imshow("canny", canny)

    lines = cv2.HoughLinesP(canny, rho=0.01, theta=np.pi/360, threshold=10, minLineLength=100, maxLineGap=30)

    print(len(lines))
    linesHorizontal, linesVertical = [], []

    if lines is None:
        print("[Info] No Hough lines have been detected")
        return image

    for line in lines:
        x1, y1, x2, y2 = line[0]
        if abs(x1 - x2) > abs(y1 - y2):
            linesHorizontal.append(Line(line[0]))
        else:
            linesVertical.append(Line(line[0]))

    # sort lines
    linesHorizontal = sorted(linesHorizontal, key=lambda l: l.d_y, reverse=True)[:10]
    linesVertical = sorted(linesVertical, key=lambda l: l.d_x, reverse=True)[:10]

    for line in linesHorizontal:
        x1, y1, x2, y2 = line.points
        cv2.line(vis, (x1, y1), (x2, y2), (0, 0, 255), 1)

    for line in linesVertical:
        x1, y1, x2, y2 = line.points
        cv2.line(vis, (x1, y1), (x2, y2), (0, 255, 0), 1)

    cv2.imshow("HoughLines", vis)

Результат обнаружения HoughLinesP

enter image description here

...