无人驾驶汽车是未来汽车的发展方向


[IT搜购网 原创] 2019-04-10 11:18:14 编辑:

无人驾驶汽车是未来汽车的发展方向,从上世纪70年代起世界各国陆续开始了对该领域的研究。近年来传统的汽车制造商、新兴的互联网巨头都争先恐后地推出了各自的无人驾驶项目,各种相关报道屡见不鲜。然后直到今天仍没有一款无人驾驶汽车真正上路投入使用,究其原因还是技术不够成熟,比如计算机视觉技术。无人驾驶汽车在上路行驶时,需要借助摄像头实时检测周围的路况、行人和车辆,然后根据这些信息做出相应判断。检测不准确、不及时可能会带来巨大的灾难。

 

视频中的物体检测

上篇文章中介绍了YOLOv3的基本概念,并用python+OpenCV进行了实现了图像中的物体检测。相比于静态的图像,我们显然对动态视频中的物体检测更感兴趣。视频实际上是由一帧一帧的图像组成的,视频中的物体检测完全可以分解成每一帧图像的物体检测。本文在上文图像物体识别的python代码的基础上稍加改动,实现已有视频或摄像头捕获视频的物体检测。

 

python+OpenCV具体实现

视频中物体的检测与单个图像中物体的检测,体现在python代码上最大的区别只有两点:一是文件加载与写入的方式不同;二是视频由多个帧组成,需要用while循环控制代码的执行逻辑。下面我们对以上两点分别加以说明。OpenCV提供了VideoCapture( )函数用于打开视频文件,这个函数非常强大,当传入参数为文件路径时将打开视频文件,当参数为0时将打开摄像头并获取摄像头拍摄的实时视频。当然也可以用来打开图像,因为图像本质上是帧数为1的视频。

 

在while循环中我们用read( )函数逐帧提取视频中的图像,read( )函数返回两个值:hasFrame是布尔类型,默认为True,当为False时表示视频中全部帧都已读取完毕(视频播放结束),我们可以在while循环中加入对hasFrame的判断作为结束条件。另一个返回值frame就是每一帧的图像,接下来的操作就是对帧图像中的物体进行检测,并筛选和标注。

OpenCV提供了VideoWriter( )函数设置写入视频的参数,包括视频保存路径、视频格式、帧率、尺寸等等,最后用write( )完成写入。OpenCV常用的视频格式有avi和mp4,avi格式更加通用,mp4占用的存储空间较小,我的电脑上保存的mp4文件打不开,因此最终我选择avi格式。

总结

根据官网的数据,使用Titan X这样的顶级显卡,YOLOv3的运算速度能达到45帧/秒,但在普通的计算机上远远达不到这个速度,我的笔记本在对视频进行物体识别时风扇狂转,目测fps也只有可怜的1,当然我的笔记本为集成显卡,我选择了CPU作为运算设备。如果你对自己的电脑配置有自信,不妨把跑一跑这个代码,获取完整代码请在评论区留言,我将通过私信发给你。

分享到:

频道精选

IT搜购网简介 | 广告服务 | 招聘 | IT搜购记事 | 站点地图 | 联系方式 | RSS订阅 | 猴科技
Copyright ©2005 - 2016 ITSOGO. All rights reserved. IT搜购网 版权所有. 冀ICP备13010806号