1.图片演示
2.视频演示
Python基于OpenCV的视频车道线检测系统[源码&部署教程]
3.边缘检测
参考该博客方案,其算法思想如下:
- 使用高斯模糊,去除噪音点(cv2.GaussianBlur)
- 灰度转换(cv2.cvtColor)
- 使用sobel算子,计算出每个点的梯度大小和梯度方向
- 使用非极大值抑制(只有最大的保留),消除边缘检测带来的杂散效应
- 应用双阈值,来确定真实和潜在的边缘
- 通过抑制弱边缘来完成最终的边缘检测
1.高斯滤波
gaussian = cv2.GaussianBlur(color_img, (gaussian_ksize,gaussian_ksize), gaussian_sigmax)
color_img 输入图片
gaussian_ksize 高斯核大小,可以为方形矩阵,也可以为矩形
gaussian_sigmax X方向上的高斯核标准偏差
2.图片转换
gray_img = cv2.cvtColor(input_image, flag)
用于颜色空间转换。input_image为需要转换的图片,flag为转换的类型,返回值为颜色空间转换后的图片矩阵。flag对应:
cv2.COLOR_BGR2GRAY BGR -> Gray
cv2.COLOR_BGR2RGB BGR -> RGB
cv2.COLOR_BGR2HSV BGR -> HSV
可以了解一下该函数和cv2.imread()的区别
3.边缘检测
edge_img = cv2.Canny(gray_img,canny_threshold1,canny_threshold2)
imag为所操作的图片,threshold1为下阈值,threshold2为上阈值,返回值为边缘图。
4.ROI and mask
利用数组选取ROI(region of interest,感性趣的区域,然后与原图进行布尔运算(与运算)。
poly_pts = numpy.array([[[0,368],[300,210],[340,210],[640,368]]])
四个数组创建后保存在变量poly_pts中。
mask = np.zeros_like(gray_img)
构建一个与gray_img同维度的数组,并初始化所有变量为零。
cv2.fillPoly(mask, pts, color)
绘制多边形函数。mask为绘制对像,pts为绘制范围,color为绘制颜色。
img_mask = cv2.bitwise_and(gray_img, mask)
与运算
5.霍夫变换
lines = cv2.HoughLinesP(edge_img, 1, np.pi / 180, 15, minLineLength=40, maxLineGap=20)
edge_img: 要检测的图片矩阵
参数2: 距离r的精度,值越大,考虑越多的线
参数3: 距离theta的精度,值越大,考虑越多的线
参数4: 累加数阈值,值越小,考虑越多的线
minLineLength: 最短长度阈值,短于这个长度的线会被排除
maxLineGap:同一直线两点之间的最大距离
返回值::
[np.array([[x_1,y_1, x_2, y_2]]),
np.array([[x_1, y_1, x_2, y_2]]),
…,
np.array([[x_1, y_1, x_2, y_2]])]
6.离群值过滤
受该博客思路启发,循环查找超出设定范围的斜率,并去除。
idx = np.argmax(diff)
当diff中存放的是一维时,找到diff中最大的数值,并返回该值所在位置。
从列表lines中把第idx数去除
7.车道线标注
cv2.line(img, tuple(line[0]), tuple(line[1]), color,thickness)
在图片上画线,img为所标注的目标图片,ine[0]为起点坐标,line[1]为终点坐标,thickness为线宽。
注意两个坐标需要为tuple元组格式,即tuple(line[0])
文章来源:https://www.toymoban.com/news/detail-400048.html
8.系统整合
下图完整源码&环境部署视频教程
参考博客《Python基于OpenCV的视频车道线检测系统[源码&部署教程]》文章来源地址https://www.toymoban.com/news/detail-400048.html
9.参考文献
- [1]基于改进Hough变换的车道线识别[J]. 辛敏,罗山. 山西电子技术. 2021(06)
- [2]基于改进Hough变换的车道线检测[J]. 李后隆,马骊溟,钟林伟. 汽车实用技术. 2021(07)
- [3]基于改进Hough变换与双点去除R-最小二乘法的车道线检测优化算法[J]. 姜立标,李静轩. 科学技术与工程. 2020(05)
- [4]基于改进Hough变换的结构化道路车道线识别[J]. 陈政宏,李爱娟,王希波,葛庆英,韩文尧,刘刚. 科学技术与工程. 2020(26)
- [5]基于叠加约束的Hough变换车道线检测研究[J]. 伍玲玲,林志贤,郭太良. 有线电视技术. 2019(03)
- [6]基于Hough变换的车道线检测算法设计[J]. 何旭光,江磊,罗一平,张伟伟. 农业装备与车辆工程. 2019(11)
- [7]基于Hough变换的车道线检测[J]. 钱怡. 山东工业技术. 2017(10)
- [8]Hough变换的车道线并行检测[J]. 王赛,徐伯庆,苏栋骐. 电子科技. 2015(12)
- [9]一种改进Hough变换的车道线检测算法[J]. 王全. 计算机与数字工程. 2014(11)
- [10]一种基于 Hough 变换的车道线检测新方法[J]. 许宏科,秦严严. 徐州工程学院学报(自然科学版). 2013(04)
到了这里,关于Python基于OpenCV的视频车道线检测系统[源码&部署教程]的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!