1
$\begingroup$

This is my code to detect the lane boundaries. But only one line(left most) is detected here. Is there a way to remove other objects from the picture (remove bushes and trees) and detect only the straight line?

import cv2
import numpy as np

img = cv2.imread('lane.jpeg')
gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
edges = cv2.Canny(gray,50,150,apertureSize = 3)

lines = cv2.HoughLines(edges,1,np.pi/180,200)
for rho,theta in lines[0]:
 a = np.cos(theta)
 b = np.sin(theta)
 x0 = a*rho
 y0 = b*rho
 x1 = int(x0 + 1000*(-b))
 y1 = int(y0 + 1000*(a))
 x2 = int(x0 - 1000*(-b))
 y2 = int(y0 - 1000*(a))

 cv2.line(img,(x1,y1),(x2,y2),(0,0,255),2)

#cv2.imwrite('20.jpg',img)
cv2.imshow('hough.jpg',img)
cv2.waitKey(0)
cv2.destroyAllWindows()

enter image description here

$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Browse other questions tagged or ask your own question.