最近更新于 2022-05-16 13:22

本文资源下载:https://pan.baidu.com/s/1oGq_AVnKEUhtBAkOEv5J1w?pwd=h4oq

测试环境:

Ubuntu 20.04 x86_64
Python 3.9.10
opencv-python 4.5.5.64
jupyter 1.0.0
numpy 1.22.3

原理:

公路上的车道线颜色为黄色和白色,因此首先对图像进行过滤,获取一定范围内的黄色和白色图像,再将两种颜色过滤结果的图像合并在一起。然后将图像转为灰度图,通过高斯滤波将图像模糊化,忽略一些细小的图案。然后进行边缘检测,提取轮廓。

此时得到的图案中包括了车道线的轮廓,当然也包含了背景物其它一些东西的轮廓,这些轮廓可能会对车道线检测造成干扰。而车道线往前延伸形成的形状就是一个梯形,因此这里构建一个梯形的 ROI 区域,将其它部分滤除掉,此时的图像中的轮廓线条主要就是车道线了。

车道线呈明显的直线,所以使用霍夫变换将直线检测出来,也就绝大可能是车道线了,然后将直线绘制出来。

评价:

基于上述原理在道路图像较好的情况下,检测车道线的准确度较高。但是如果道路上出现阴影以及车道线以内有地面标志等情况下,就可能有一定程度的偏差,不过用于模型小车演示应该是足够了,距离真车实用还有待改进。

说明:

通过上面的链接可以下载我测试用的行车视频以及代码文件,使用 jupyter 打开车道线检测1.0.ipynb,然后运行整个 notebook 就行。