На самом деле я новичок в работе с компьютерным зрением. Извините заранее.
Я хочу обнаружить края трамвайной полосы. В основном код работает хорошо, но иногда он не может даже провести линию. Не знаю почему.
Функция cropped_Image просто обрезает многоугольную область текущего кадра.
Функция display_lines рисует линии с абсолютным значением угла от 30 до 90. Для рисования линий используется cv2.line.
Вот код:
_,frame = cap.read()
gray = cv2.cvtColor(frame, cv2.COLOR_RGB2GRAY) # convert image to gray to be one layer
blur = cv2.GaussianBlur(gray, (1, 1), 0) # to reduce noise in gray scale image
canny = cv2.Canny(blur, 150, 200, apertureSize=3)
cropped_image = region_of_interest(canny) # simply, it crops bottom of image
lines = cv2.HoughLinesP(cropped_image, 1, np.pi / 180, 100, np.array([]),
minLineLength=5, maxLineGap=5)
hough_bundler = HoughBundler()
lines_merged = hough_bundler.process_lines(lines, cropped_image)
line_image = display_lines(frame, lines_merged)
combo_image = cv2.addWeighted(frame, 0.8, line_image, 1, 1)
cv2.imshow(‘test’, combo_image)
Чтобы увидеть это: HoughBundler
Ожидается: ожидаемый img
Canny: canny img неправильного результата
Результат: неверный результат