深度学习和OpenCV的对象检测(MobileNet SSD视频流实时识别)

上期文章,我们分享了如何使用opencv 与MobileNet SSD模型来检测给定的图片,有网友反馈能否提供一下视频流的实时检测代码,其实我们在分享人脸识别的时候,分享了如何使用cv2.videoCpature 类来从视频中实时提取视频中的图片,进行人脸的识别,视频流的对象检测跟opencv的人脸检测一致,也可以使用cv2.videoCpature 类来从视频中实时提取视频中的图片,进行图片的对象检测,此类代码可以参考往期文章人工智能-Dlib+Python实现人脸识别

本期我们使用另外一个第三方库imutils,首先使用pip install imutils来安装

1 导入需要的第三方库

2 初始化训练模型

此部分代码跟图片检测一致

#14 # 15 输入prototxt与caffe 的模型文件地址

#17 class列表是SSD caffe检测模型中的20个label标签,还包括一个background

#21 针对每个label,随机建一个颜色,以便后期检测图片时 ,使用不同的颜色框,以便区分

# 22 使用cv的dnn加载模型数据

3 初始化视频对象

# 25 启动摄像头,src=0 ,默认是打开设备的默认摄像头

# 26 延时 ,以便摄像头打开

# 27 启动视频帧记录函数

4 视频流检测

视频流的对象检测与图片的检测过程一致,每行代码几乎都有注释,不再一一介绍

主要的区别是:图片检测首先定义了图片地址,视频检测,在视频流中提图片

# 31 resize 了图片尺寸,避免图片太大

# 53 当检测到对象后,通过imshow实时显示在视频流中

# 54-56 若输入q 退出

# 57 视频帧自动加1

5 end

检测结束,我们关闭一些资源

print 每秒的视频信息:每秒处理的视频帧数,每帧处理的时间

每秒处理8.7帧图片,稍微有点慢 ,若电脑配置高的话,或者使用多进程会好很多

多线程与多进程知识点,会在《每天一分钟,python一点通》系列教程中分享

从视频中截取的图片

微&信搜索:启示AI 科技

可以体验不同的AI 工具

当然,你也可以导入一个视频,让神经网络来检测,src=”要打开视频的绝对地址便可

检测完成后使用cv2的VideoWriter来保存视频便可

vs = VideoStream(src=”)

下期分享

说到了多进程,我们下期来使用此方法优化一下代码来提高每秒的处理