使用YOLOv5实现单摄像头实时目标检测

我将在上一节的基础上,一步一步展示如何实现单摄像头实时目标检测,其中包括我在配置过程中遇到的报错和解决方法。

实现单摄像头实时目标检测

  1. 将--source的默认值改为0
parser.add_argument(--source, type=str, default=0,help=file/dir/URL/glob, 0 for webcam)

这里的0是指系统默认的第一个摄像头,通常是电脑自带的摄像头,所以一定要记得把摄像头打开再运行代码(有些电脑会有摄像头物理开关,也记得打开)

  1. 这个时候很可能会出现TypeError: argument of type int is not iterable报错

解决方法:

在datasets.py中第279行代码,给两个url参数加上str就可以了

  1. 运行detect.py
  1. 红线处表明摄像头视野内识别到了一个人,识别时间为0.006秒
  1. 英文小写输入状态下,长按键盘上的 q 可以结束识别
  1. 识别结果会以视频形式保存到如下路径

注意,要点击一下实时检测窗口,切换到英文小写输入法再按"q"才能正常退出并保存检测视频(强行结束程序可能会导致视频格式错误)

外接USB摄像头实时目标检测

parser.add_argument(--source, type=str, default=1,help=file/dir/URL/glob, 0 for webcam)

其他可能的报错

1.运行出现报错:AttributeError: NoneType object has no attribute shape

这种情况往往是之前成功运行了一次,再次运行时出现的报错,是硬件bug,将电脑的摄像头物理开关 先关闭 再打开 重新运行即可。

2.运行出现只能识别第一帧的画面的问题

这个问题我没有遇到,但是评论区有人反映,存在这样的问题。可以参考下面这篇博客进行解决(来自评论区大佬):

求学路上,你我共勉(๑•̀ㅂ•́)و✧

我将在上一节的基础上,一步一步展示如何实现单摄像头实时目标检测,其中包括我在配置过程中遇到的报错和解决方法。 实现单摄像头实时目标检测 将--source的默认值改为0 parser.add_argument(--source, type=str, default=0,help=file/dir/URL/glob, 0 for webcam) 这里的0是指系统默认的第一个摄像头,通常是电脑自带的摄像头,所以一定要记得把摄像头打开再运行代码(有些电脑会有摄像头物理开关,也记得打开) 这个时候很可能会出现TypeError: argument of type int is not iterable报错 解决方法: 在datasets.py中第279行代码,给两个url参数加上str就可以了 运行detect.py 红线处表明摄像头视野内识别到了一个人,识别时间为0.006秒 英文小写输入状态下,长按键盘上的 q 可以结束识别 识别结果会以视频形式保存到如下路径 注意,要点击一下实时检测窗口,切换到英文小写输入法再按"q"才能正常退出并保存检测视频(强行结束程序可能会导致视频格式错误) 外接USB摄像头实时目标检测 parser.add_argument(--source, type=str, default=1,help=file/dir/URL/glob, 0 for webcam) 其他可能的报错 1.运行出现报错:AttributeError: NoneType object has no attribute shape 这种情况往往是之前成功运行了一次,再次运行时出现的报错,是硬件bug,将电脑的摄像头物理开关 先关闭 再打开 重新运行即可。 2.运行出现只能识别第一帧的画面的问题 这个问题我没有遇到,但是评论区有人反映,存在这样的问题。可以参考下面这篇博客进行解决(来自评论区大佬): 求学路上,你我共勉(๑•̀ㅂ•́)و✧
经验分享 程序员 微信小程序 职场和发展