项目介绍
下图中的两条线即为车道:
我们的任务就是通过 OpenCV 在一段视频(或摄像头)中实时检测出车道并将其标记出来。其效果如下图所示:
这里使用的代码来源于 磐怼怼 大神,此文章旨在对其代码进行解释。
实现步骤
1、将视频的所有帧读取为图片;
2、创建掩码并应用到这些图片上;
3、图像阈值化;
4、用霍夫线变换检测车道;
5、将车道画到每张图片上;
6、将所有图片合并为视频。
代码实现
1、导入需要的库
import os import re import cv2 import numpy as np from tqdm import notebook import matplotlib.pyplot as plt
其中 tqdm.notebook 是用来显示进度条的。
2、将图片(视频的每一帧)加载进来
这里我们已经将视频的每一帧读取为图片了,并将它们都放进 frames 文件夹。
# 获取帧的文件名 col_frames = os.listdir('frames/') # 读取 frames 文件夹下的所有图片 col_frames.sort(key=lambda f: int(re.sub('\D', '', f))) # 按名称对图片进行排序 # 加载帧 col_images=[] for i in notebook.tqdm(col_frames): img = cv2.imread('frames