日萌社
人工智能AI:Keras PyTorch MXNet TensorFlow PaddlePaddle 深度学习实战(不定时更新)
CNN:RCNN、SPPNet、Fast RCNN、Faster RCNN、YOLO V1 V2 V3、SSD、FCN、SegNet、U-Net、DeepLab V1 V2 V3、Mask RCNN
相机校正、张氏标定法、极大似然估计/极大似然参数估计、牛顿法、高斯牛顿法、LM算法、sin/cos/tan/cot
5.6. 在视频中检测车道线
学习目标
- 了解在视频中检测车道线的方法
在前面几节中一步步完成摄像机标定、图像畸变校正、透视变换、提取车道线、检测车道线、计算曲率和偏离距离后,在图像上实现了复杂环境下的车道线检测算法。现在我们将视频转化为图片,然后一帧帧地对视频数据进行处理,然后将车道线检测结果存为另一段视频,代码如下:
首先将前面的方法进行汇总:
def process_image(img):
# 1.图像去畸变
undistort_img = img_undistort(img, mtx, dist)
# 2.车道线检测
rigin_pipline_img = pipeline(undistort_img)
# 3.透视变换
transform_img = img_perspect_transform(rigin_pipline_img, M)
# 4.精确定位车道线,并拟合
left_fit, right_fit = cal_line_param(transform_img)
# 5.绘制车道区域
result = fill_lane_poly(transform_img, left_fit, right_fit)
# 6.反投影
transform_img_inverse = img_perspect_transform(result, M_inverse)
# 7.计算曲率半径和偏离中心的距离
transform_img_inverse = cal_radius(transform_img_inverse, left_fit, right_fit)
transform_img_inverse = cal_center_departure(transform_img_inverse, left_fit, right_fit)
# 8. 将检测结果与原始图像叠加
transform_img_inverse = cv2.addWeighted(undistort_img, 1, transform_img_inverse, 0.5, 0)
return transform_img_inverse
接下来,读取视频并调用上述方法:
clip1 = VideoFileClip("project_video.mp4")
white_clip = clip1.fl_image(process_image)
white_clip.write_videofile("output.mp4", audio=False)
处理结果如下所示:
在视频中检测车道线
总结:
视频中的处理将之前的处理步骤进行综合,完成车道线的检测。