本文来源公众号“OpenCV与AI深度学习”,仅用于学术分享,侵权删,干货满满。
0 导读
本文主要介绍如何使用 Python 和 OpenCV实现一个实时曲线道路检测系统。
1 背景介绍
在任何驾驶场景中,车道线都是指示交通流量和车辆应行驶位置的重要组成部分。这也是开发自动驾驶汽车的一个很好的起点!在我之前的车道检测项目的基础上,我实现了一个曲线车道检测系统,该系统工作得更好,并且对具有挑战性的环境更加稳健。车道检测系统是使用 OpenCV 库用 Python 编写的。
下面是实现步骤:
-
畸变校正
-
透视变换
-
Sobel滤波
-
直方图峰值检测
-
滑动窗口搜索
-
曲线拟合
-
覆盖检测车道
-
应用于视频
2 畸变矫正
相机镜头扭曲入射光以将其聚焦在相机传感器上。尽管这对于我们捕捉环境图像非常有用,但它们最终往往会稍微不准确地扭曲光线。这可能导致计算机视觉应用中的测量不准确。然而,我们可以很容易地纠正这种失真。
我们可以使用棋盘格来标定相机然后做畸变校正:
测试视频中使用的相机用于拍摄棋盘格的 20 张照片,用于生成畸变模型。我们首先将图像转换为灰度,然后应用cv2.findChessboardCorners()函数。我们已经知道这个棋盘是一个只有直线的二维对象,所以我们可以对检测到的角应用一些变换来正确对齐它们。用 cv2.CalibrateCamera() 来获取畸变系数和相机矩阵。相机已校准!
然后,您可以使用它cv2.undistort()来矫正其余的输入数据。您可以在下面看到棋盘的原始图像和校正后的图像之间的差异&