深度学习和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='')
下期分享
说到了多进程,我们下期来使用此方法优化一下代码来提高每秒的处理