python+opencv车道线检测(简易实现)车道线检测(简易实现)
python+opencv车道线检测(简易实现)车道线检测(简易实现)
技术栈:技术栈:python+opencv
实现思路:实现思路:
canny边缘检测获取图中的边缘信息;
霍夫变换寻找图中直线;
绘制梯形感兴趣区域获得车前范围;
得到并绘制车道线;
效果展示:效果展示:
代码实现:代码实现:
import cv2
import numpy as np
def canny():
gray = cv2.cvtColor(lane_image, cv2.COLOR_RGB2GRAY)
#高斯滤波
blur = cv2.GaussianBlur(gray, (5, 5), 0)
#边缘检测
canny_img = cv2.Canny(blur, 50, 150)
return canny_img
def region_of_interest(r_image):
h = r_image.shape[0] w = r_image.shape[1] # 这个区域不稳定,需要根据图片更换
poly = np.array([
[(100, h), (500, h), (290, 180), (250, 180)] ])
mask = np.zeros_like(r_image)
# 绘制掩膜图像
cv2.fillPoly(mask, poly, 255)
# 获得ROI区域
masked_image = cv2.bitwise_and(r_image, mask)
return masked_image
if __name__ == '__main__':
image = cv2.imread('test.jpg')
lane_image = np.copy(image)
canny = canny()
cropped_image = region_of_interest(canny)
cv2.imshow("result", cropped_image)
cv2.waitKey(0)
霍夫变换加线性拟合改良:霍夫变换加线性拟合改良:
效果图:效果图:
代码实现:代码实现:
主要增加了根据斜率作线性拟合过滤无用点后连线的操作;
import cv2
import numpy as np
def canny():
gray = cv2.cvtColor(lane_image, cv2.COLOR_RGB2GRAY)
评论1