Я использую этот код для обнаружения линий с хитрым и грубым, но эффект не очень хороший.
Я хочу нарисовать линию на бордюре. Цель рисования прямой линии - определить положение линии на изображении, потому что, когда я еду самостоятельно, я хочу, чтобы моя машина ROS ехала по обочине. Моя страна едет по правой стороне.
import cv2
import numpy as np
img = cv2.imread(r"E:\test_opencv\images\testcanny.jpg")
blur_img = cv2.GaussianBlur(img, (3, 3), 0)
edges = cv2.Canny(blur_img, 250, 450, apertureSize=3)
lines = cv2.HoughLines(edges, 1, np.pi / 180, 118)
minLineLength = 800
maxLineGap = 15
threshold=80
lines = cv2.HoughLinesP(edges, 1, np.pi / 180, threshold, minLineLength, maxLineGap)
for i in range(len(lines)):
for x1, y1, x2, y2 in lines[i]:
cv2.line(img, (x1, y1), (x2, y2), (0, 255, 0), 4)
cv2.imshow('canny', edges)
cv2.imshow('Result', img)
cv2.waitKey(0)
cv2.destroyAllWindows()
Исходное изображение:
Картинка с рисунком:
Результирующее изображение:
Только несколько коротких зеленых линий на результирующем изображении.
На самом деле, я просто хочу красный часть бордюра, чтобы стать зеленой линией.
Точно так же:
Как исправить код?