无人驾驶学习—第一课

(本课程内容来自优达学城无人驾驶纳米学位)
车道线识别
内容:
识别出一幅图像中的车道线并将其标注出来
过程:
1、准备一张包含有车道线的图片;
2、读取图片并转换为灰度图;
3、使用一个5*5大小的算子对图片进行高斯平滑;
4、设置Canny边缘检测的参数:low_threshold = 50、high_threshold = 150,得到边缘;
5、通过参数设置感兴趣区域,截取出边缘图中感兴趣区域,得到掩膜下的车道线;
6、设置霍夫变换参数,在掩膜下的车道线图片中将车道线标注出来;
7、将标注出来的车道线相加道边缘图中,得到最终的车道线图;

图片:

代码:

import matplotlib.pyplot as plt
import matplotlib.image as mpimg
import numpy as np
import cv2def lane_identification():# Read the image and convert it to grayscale image image = mpimg.imread('lane-linep.jpg')gray = cv2.cvtColor(image,cv2.COLOR_RGB2GRAY)# Define a kernel size and apply Gaussian smoothingkernel_size = 5blur_gray = cv2.GaussianBlur(gray,(kernel_size, kernel_size),0)# Define parameters for Canny and applylow_threshold = 50high_threshold = 150edges = cv2.Canny(blur_gray, low_threshold, high_threshold)# create a masked edges image using cv2.fillPoly()mask = np.zeros_like(edges)   ignore_mask_color = 255 # This time we are defining a four sided polygon to maskimshape = image.shapevertices = np.array([[(0,imshape[0]),(450, 290), (490, 290), (imshape[1],imshape[0])]], dtype=np.int32)cv2.fillPoly(mask, vertices, ignore_mask_color)masked_edges = cv2.bitwise_and(edges, mask)# Define the Hough transform parametersrho = 2 # distance resolution in pixels of the Hough gridtheta = np.pi/180 # angular resolution in radians of the Hough gridthreshold = 15     # minimum number of votes (intersections in Hough grid cell)min_line_length = 40 #minimum number of pixels making up a linemax_line_gap = 20    # maximum gap in pixels between connectable line segmentsline_image = np.copy(image)*0 # creating a blank to draw lines on# Run Hough on edge detected image# Output "lines" is an array containing endpoints of detected line segmentslines = cv2.HoughLinesP(masked_edges, rho, theta, threshold, np.array([]),min_line_length, max_line_gap)# Iterate over the output "lines" and draw lines on a blank imagefor line in lines:for x1,y1,x2,y2 in line:cv2.line(line_image,(x1,y1),(x2,y2),(255,0,0),10)# Create a "color" binary image to combine with line imagecolor_edges = np.dstack((edges, edges, edges)) # Draw the lines on the edge imagelines_edges = cv2.addWeighted(color_edges, 0.8, line_image, 1, 0) plt.imshow(lines_edges)plt.show()

过程图片:

1、灰度图:

2、边缘检测图:

3、掩膜下的车道线:

4、标注出来的车道线:

5、边缘图中的车道线:

第一课较简单,只识别出图片中车道线,后续继续加油,本博客内容不得转载,不得作为他用,仅互相学习,谢谢。

无人驾驶学习---第一课相关推荐

  1. 无人驾驶实战第一课--七月在线

    无人驾驶实战第一课--七月在线 概述 无人驾驶分级 L4级架构 自动驾驶软件概述 mark一下,希望坚持下去 概述 未来的趋势是无人驾驶.传感器,车辆,算法都有非常大的空间. 无人驾驶分级 L0 ,手 ...

  2. JavaScript学习 第一课(一)

    JavaScript学习 第一课(一) 学习内容 一.什么是JavaScript 二.如何引用JavaScript 三.JavaScript使用时注意的事项 四.JavaScript中的保留字与关键字 ...

  3. gb2818的学习第一课

    关于gb2818的学习第一课 一.说明 为什么写这一系列的文章,自己在做gb28181是的一下痛苦的经历,在经过了网上的大量资料终于有所进步,所以想回馈一下大神们. 二.安装 参考文章:Linux编译 ...

  4. python学习第一课——环境配置+比着葫芦画个瓢

    python学习第一课 1. python概览 2. python的运行 3. python的变量.类型与存储 4. 对*.py文件的运行与存储 5. 终端切换路径及目录显示 6. 踩着巨人的肩膀创新 ...

  5. python学习第一课

    python学习第一课 课前回顾 1.请求类型: 2.传参类型: 3.postman断言.参数化.多接口参数依赖 接口文档 这个接口是做什么的?URL请求类型参数--> 如何传递参数params ...

  6. CS61C学习 —— 第一课

    目标 CS61C学习 -- 第一课 计算机处理器和内存是如何工作的? 处理器和内存是如何影响软件设计和性能的? 介绍计算机系统领域相关知识(CS 152, CS 164, CS 161, CS 149 ...

  7. 0.0 目录-深度学习第一课《神经网络与深度学习》-Stanford吴恩达教授

    文章目录 第五课 第四课 第三课 第二课 第一课 第五课 <序列模型> 笔记列表 Week 1 循环序列模型 Week 1 传送门 -> 1.1 为什么选择序列模型 1.2 数学符号 ...

  8. 微信SDK开发学习第一课

    1.为什么学习微信API开发? 微信注册用户6亿,把微信当做推广平台已经成为主流. 2.微信SDK主要功能有哪些? 主要功能:分享给朋友,分享到朋友圈 3.如何使用微信SDK? 3.1 打开微信SDK ...

  9. golang学习第一课

    目前跟着振哥(滴滴golang工程师)学习golang,因为也是第一次接触这个语言,想着边学习边记录一下. 统一学习环境,手把手教学学生云服务器的购买和配置 初步认识Linux系统,了解常见命令的用法 ...

最新文章

  1. SAP S/4HANA现金管理之变
  2. fluentd mysql_使用Fluentd + MongoDB构建实时日志收集系统
  3. linux调用一个函数失败 打印错误,linux系统调用出错时的处理函数
  4. 开机流程与主引导分区(MBR)
  5. python3交互模式下 按上翻箭头显示乱码_CentOS 6.3中,Python-2.7.3交互模式下方向键、退格键等出现乱码...
  6. matlab dir数,DIR - matlab函数
  7. 现在装修还有必要铺设网线吗?
  8. Python中的文件复制
  9. python学习笔记(十二)python操作redis
  10. 【QT】QT从零入门教程(一):图像处理自编软件
  11. Confluence 6 导入 Active Directory 服务器证书 - Windows
  12. Tensorrt7踩坑记录
  13. 多模态预训练CLIP模型的强大为例
  14. (5)将一个数组中的值按逆序重新存放。例如原来顺序为8,6,5,4,1。要求改为1,4,5,6,8
  15. Linux基础入门到精通之虚拟机中安装Linux系统(二)
  16. Storm - 事务管理
  17. bcc服务器搭建网站,如何用云服务器bcc建站
  18. MATLAB读raw,dat文件代码
  19. Filter内存马浅析
  20. 【调剂】计算机好的矿山安全、计算机等专业工科男(学硕)调剂信息

热门文章

  1. mydumper 介绍及使用
  2. 【微信小程序控制硬件⑥ 进阶篇】服务器如何集成七牛云存储SDK,把用户自定义设备图片存储在第三方服务器!
  3. Human-like learning在对话机器人中的魔性运用
  4. 马云:全面进军芯片领域!打响第一炮!中国科技当自强!!
  5. java rar_java如何解压rar文件
  6. 股票MACD指标算法公式
  7. jlink修复固件教程
  8. iOS 判断手机型号及系统版本(最新)持续更新
  9. Cesium飞行效果
  10. Mac录屏,同时保留声音