Вы можете удалить большую часть шума, установив порог вашего изображения, прежде чем применять функцию определения края.Таким образом, вы удалите (большинство) автомобилей и сохраните интересующие вас пустые линии:
import cv2
img = cv2.imread('Parking-Lot.jpg')
threshold=100
minLineLength = 60
rho=2
maxLineGap=20
theta = np.pi/180
# here you convert the image to grayscale and then threshhold to binary
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
ret,thresh = cv2.threshold(gray,180,255,cv2.THRESH_BINARY)
# continue with the threshholded image instead
edges = cv2.Canny(thresh, 100, 200)
lines = cv2.HoughLinesP(edges, rho, theta, threshold, np.array([]), minLineLength =minLineLength , maxLineGap=maxLineGap)
for i in range(len(lines)):
for line in lines[i]:
cv2.line(img, (line[0],line[1]), (line[2],line[3]), (0,255,0), 2)
cv2.imwrite("lines.jpg", img)
Это даст вам более чистый результат:
Не стесняйтесь экспериментировать с пороговыми параметрами;вам нужно будет найти порог, который исключает большинство автомобилей, сохраняя при этом все линии, которые вы хотите обнаружить.