计算机系统应用教程网站

网站首页 > 技术文章 正文

「深度学习计算机视觉实战」无人驾驶中的车道线检测

btikc 2024-09-03 11:25:00 技术文章 15 ℃ 0 评论

本文中使用的函数详细说明可以参考图书《学习OpenCV 4:基于Python的算法实战》,该书内容如下:

第1章 OpenCV快速入门;
第2章 图像读写模块imgcodecs;
第3章 核心库模块core;
第4章 图像处理模块imgproc(一);
第5章 图像处理模块imgproc(二);
第6章 可视化模块highgui;
第7章 视频处理模块videoio;
第8章 视频分析模块video;
第9章 照片处理模块photo;
第10章 2D特征模块features2d;
第11章 相机标定与三维重建模块calib3d;
第12章 传统目标检测模块objdetect;
第13章 机器学习模块ml;
第14章 深度神经网络模块dnn

对深度学习计算机视觉的内容深入学习可以参考图书《深度学习计算机视觉实战》,该书包括四个方面的内容。

第一部分:深度学习与计算机视觉的基础介绍(经典网络与算法);
第二部分:模型训练中常用的预处理和后处理图像处理算法介绍;
第三部分:计算机视觉项目实战;
第四部分:基于Tensorflow Lite的模型部署(lite源码讲解、模型量化、模型转换、PC和移动端部署)。

下面介绍车道线检测,先看一看检测效果:

绿色线表示的就是车道线?。

检测代码如下?(完整代码可以到gzh“计算机视觉与OpenCV"回复“车道线检测”获取):

# 读取采集的行驶视频
cap = cv.VideoCapture("input.mp4")
while (cap.isOpened()):
    # 获取视频帧
    ret, frame = cap.read()
    # 执行边缘检测并显示结果
    canny = do_canny(frame)
    cv.imshow("canny", canny)
    # 车道线区域分割
    segment = do_segment(canny)
    # 执行霍夫变换检测车道线
    hough = cv.HoughLinesP(segment, 2, np.pi / 180, 100, np.array([]), minLineLength = 100, maxLineGap = 50)
    # 计算车道线
    lines = calculate_lines(frame, hough)
    # 车道线可视化
    lines_visualize = visualize_lines(frame, lines)
    cv.imshow("hough", lines_visualize)
    # 将车道线添加到帧图像上去
    output = cv.addWeighted(frame, 0.9, lines_visualize, 1, 1)
    # 将带有绘制车道线的结果显示
    cv.imshow("output", output)
    # 视频帧的读取间隔为10ms,按下q键退出检测
    if cv.waitKey(10) & 0xFF == ord('q'):
        break
# 资源释放
cap.release()
cv.destroyAllWindows()

边缘检测结果如下:


通过设置三角形的mask分割分割出来我们感兴趣的检测区域:

这样就可以得到车道线区域,最后通过霍夫变换得到的车道线如下:


本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表