# 独家 | 无人驾驶项目实战： 使用OpenCV进行实时车道检测

• 深度学习基础

https://courses.analyticsvidhya.com/courses/fundamentals-of-deep-learning

• 使用深度学习的计算机视觉

https://courses.analyticsvidhya.com/courses/computer-vision-using-deep-learning-version2

# 目录

1. 了解车道检测的概念

2. 问题陈述

4. 用于车道检测的图像预处理

5. 在Python中使用OpenCV进行车道检测实战

# 车道检测的概念

Figure 1：https://en.wikipedia.org/wiki/Lane

Figure 2 https://github.com/qinnzou/Robust-Lane-Detection

# 在Python中使用OpenCV实现车道检测

```import os
import re
import cv2
import numpy as np
from tqdm import tqdm_notebook
import matplotlib.pyplot as plt```

```# get file names of frames
col_frames = os.listdir('frames/')
col_frames.sort(key=lambda f: int(re.sub('\D', '', f)))

col_images=[]```

```# specify frame index
idx = 457

# plot frame
plt.figure(figsize=(10,10))
plt.imshow(col_images[idx][:,:,0], cmap= "gray")```

```# create a zero array
stencil = np.zeros_like(col_images[idx][:,:,0])

# specify coordinates of the polygon
polygon = np.array([[50,270], [220,160], [360,160], [480,270]])

# fill polygon with ones
cv2.fillConvexPoly(stencil, polygon, 1)

# plot polygon
plt.figure(figsize=(10,10))
plt.imshow(stencil, cmap= "gray")
plt.show()```
```# apply polygon as a mask on the frame

plt.figure(figsize=(10,10))
plt.imshow(img, cmap= "gray")
plt.show()```

1. 图像阈值处理

2. 霍夫线变换

1.图像阈值处理

```# apply image thresholding
ret, thresh = cv2.threshold(img, 130, 145, cv2.THRESH_BINARY)

# plot image
plt.figure(figsize=(10,10))
plt.imshow(thresh, cmap= "gray")
plt.show()```

2. 霍夫线变换

```lines = cv2.HoughLinesP(thresh, 1, np.pi/180, 30, maxLineGap=200)

# create a copy of the original frame
dmy = col_images[idx][:,:,0].copy()

# draw Hough lines
for line in lines:
x1, y1, x2, y2 = line[0]
cv2.line(dmy, (x1, y1), (x2, y2), (255, 0, 0), 3)

# plot frame
plt.figure(figsize=(10,10))
plt.imshow(dmy, cmap= "gray")
plt.show()```

```cnt = 0

for img in tqdm_notebook(col_images):

# apply image thresholding
ret, thresh = cv2.threshold(masked, 130, 145, cv2.THRESH_BINARY)

# apply Hough Line Transformation
lines = cv2.HoughLinesP(thresh, 1, np.pi/180, 30, maxLineGap=200)
dmy = img.copy()

# Plot detected lines
try:
for line in lines:
x1, y1, x2, y2 = line[0]
cv2.line(dmy, (x1, y1), (x2, y2), (255, 0, 0), 3)

cv2.imwrite('detected/'+str(cnt)+'.png',dmy)

except TypeError:
cv2.imwrite('detected/'+str(cnt)+'.png',img)

cnt+= 1```

```# input frames path
pathIn= 'detected/'

# output path to save the video

# specify frames per second
fps = 30.0

from os.path import isfile, join

# get file names of the frames
files = [f for f in os.listdir(pathIn) if isfile(join(pathIn, f))]
files.sort(key=lambda f: int(re.sub('\D', '', f)))```

```frame_list = []

for i in tqdm_notebook(range(len(files))):
filename=pathIn + files[i]
height, width, layers = img.shape
size = (width,height)

#inserting the frames into an image array
frame_list.append(img)```

```# write the video
out = cv2.VideoWriter(pathOut,cv2.VideoWriter_fourcc(*'DIVX'), fps, size)

for i in range(len(frame_array)):
# writing to a image array
out.write(frame_array[i])

out.release()```

# 总结

Hands-On Tutorial on Real-Time Lane Detection using OpenCV (Self-Driving Car Project!)

https://www.analyticsvidhya.com/blog/2020/05/tutorial-real-time-lane-detection-opencv/

0 条评论

• ### 独家 | 2019 ICCV 收录论文：基于弱监督学习的病理影像分析框架

恶性肿瘤是全球第二大死因，每年导致近千万人死亡。病理报告是肿瘤临床诊断和治疗的“金标准”，是癌症确诊和治疗的基本依据。为了缓解世界范围内病理医生短缺的现状，人工...

• ### 白天鹅黑天鹅灰天鹅？手把手教你用卷积神经网络搞定识别

本文将通过一系列的天鹅图片来解释卷积神经网络（CNN）的概念，并使用CNN在常规多层感知器神经网络上处理图像。

• ### 独家 | 基于Python实现交互式数据可视化的工具(用于Web)

这学期（2018学年春季学期）我教授了一门关于数据可视化的数据科学硕士课程。我们的数据科学硕士项目是一个为期15个月的强化项目，这个项目已经成功地培养了许多优秀...

• ### 我的妻子总问我她今天该穿什么，于是我用AI做了这样一款时尚应用

我妻子几乎每天都会问这个问题：我今天该穿什么？这是一个很难回答的问题，因为首先我没有时尚感，而 Yumi 恰恰相反，她有时装设计学位。其次，我记性不好，我想不起...

• ### Object Detection in Foggy Conditions by Fusion of Saliency Map and YOLO

版权声明：本文为博主原创文章，遵循 CC 4.0 BY-SA 版权协议，转载请附上原文出处链接和本声明。 ...

• ### 基于Matlab的三维人脸识别系统开发

在过去的十年中已经提出了几种用于图像处理和计算机视觉应用的机器学习算法。LBP，HAAR是一些流行的算法，广泛用于人脸识别并产生出色的结果。但是大多数这些算法不...

• ### 学界 | 如何让医学图像诊断网络具备可解释性？CVPR oral 作者张子钊详解 MDNet 技术细节

AI 科技评论按：AI 科技评论对各大顶级会议的论文及作者一直保持高度关注，在邀约优秀的与会老师和同学参加GAIR大讲堂等线下分享活动外，AI 科技评论也会持续...

• ### 目前最先进的目标检测能用于自动驾驶吗？这群德国人认真地做了个测评！

目标检测是自动驾驶技术的重要内容，确保上路安全，需要能够精准地检测出路面上所有目标。

• ### MIT语义软分割实现精细“抠图”，有助于打造逼真的电影特效

随着电影越来越注重CGI，电影制作人必须越来越擅长“合成”，即合并前景和背景图像，例如将演员放置在飞机或行星的顶部，或者放入《黑豹》的Wakanda这样的虚构世...