本文中使用的函数详细说明可以参考图书《学习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分割分割出来我们感兴趣的检测区域:
这样就可以得到车道线区域,最后通过霍夫变换得到的车道线如下:
本文暂时没有评论,来添加一个吧(●'◡'●)