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

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

80e9c3d45a47d7459ded3fcc2456fbf3.png

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

1 导入需要的第三方库

0f3136c972401b4dd78ce0ed2a17fac1.png

2 初始化训练模型

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

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

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

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

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

06e2979facdc9766d410e5534301db20.png

3 初始化视频对象

593b19ad38d37c9d3dc52245bcae5492.png

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

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

# 27 启动视频帧记录函数

4 视频流检测

fb4b08d6f7cee90fb313661361324e88.png

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

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

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

f5f8db8fb46d91697d9e693d950f1918.png

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

# 54-56 若输入q 退出

# 57 视频帧自动加1

5 end

d6e4a8eaa4185685dd30c4f6e2efbc0e.png

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

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

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

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

aba3f62f7ef2a42a8f5326a2a088a30d.png

从视频中截取的图片

bf146d917c231dc39ed45dd0c690e078.png

微&信搜索:启示AI 科技

可以体验不同的AI 工具

6b474431b075b82c9cc0bca9051c0a88.png

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

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

vs = VideoStream(src='')

下期分享

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

c0cbbb3fe0f4d6b062935f8eb36c241a.png
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值