在视频中检测车道线

日萌社

人工智能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

相机校正和图像校正:图像去畸变

车道线提取:Sobel边缘提取算法

透视变换

车道线定位及拟合:直方图确定车道线位置

车道曲率和中心点偏离距离计算

在视频中检测车道线


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)

处理结果如下所示:

在视频中检测车道线

总结:

视频中的处理将之前的处理步骤进行综合,完成车道线的检测。

 

 

 

你可能感兴趣的:(人工智能,OpenCV)