学习目标
- 了解在视频中检测车道线的方法
在前面几节中一步步完成摄像机标定、图像畸变校正、透视变换、提取车道线、检测车道线、计算曲率和偏离距离后,在图像上实现了复杂环境下的车道线检测算法。现在我们将视频转化为图片,然后一帧帧地对视频数据进行处理,然后将车道线检测结果存为另一段视频,代码如下:
首先将前面的方法进行汇总:
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)
处理结果如下所示:
总结:
视频中的处理将之前的处理步骤进行综合,完成车道线的检测。