使用YOLOv5实现实时目标检测结果保存

这篇具有很好参考价值的文章主要介绍了使用YOLOv5实现实时目标检测结果保存。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

       本文将分享保存实时目标检测结果的方法,包括将目标信息逐帧保存到.txt文件中、逐帧输出检测结果图片、以及如何保存所有检测图片(包括视野中无目标的帧)。

目录

0.准备

1.目标信息保存

2.检测图片保存

3.保存所有帧


0.准备

       本文以单摄像头实时目标检测进行演示,但是对多摄像头实时检测同样适用。如何进行实时检测这里就不再重复,详细的实现步骤可以看我之前写的博客:

使用YOLOv5实现单摄像头实时目标检测_Albert_yeager的博客-CSDN博客

使用YOLOv5实现多摄像头实时目标检测_Albert_yeager的博客-CSDN博客

1.目标信息保存

       这个实际上是YOLOv5工程自带的功能,但是需要通过命令行的方式运行才能使用。在终端中运行下方指令,即可运行检测代码,并完成目标信息保存

python detect.py --weights yolov5s.pt --source 0 --save-txt

使用YOLOv5实现实时目标检测结果保存

       图中 1 是调用本地摄像头进行实时目标检测(可以改成USB摄像头或IP摄像头,具体看我之前的博客);2 是在pycharm中打开终端;3 是之前提到需要运行的指令。

       有几个细节需要强调:终端运行后要点击一下实时检测窗口,按键盘上的 ‘q’ 结束检测,注意是在英文小写状态下按q,我在运行程序时输入法会自动切换到中文,这个时候按q是无效的,同时英文大写状态的Q也是无效的(因为q和Q的ASCII码值不同),当然这是代码设定的,可以改成别的字母结束。重要的是,只有通过这种方式,才能正常保存检测视频,如果直接关掉软件结束会使保存的视频文件无法打开。

       运行完成后,会在.../runs/detect 文件目录下生成结果:

使用YOLOv5实现实时目标检测结果保存

        0.mp4 是实时检测的结果视频,labels中就是每帧的目标信息,以.txt格式保存(如果以60帧的速度运行,每秒就会生成60个.txt文件)。

使用YOLOv5实现实时目标检测结果保存

        随便打开一个文件,可以看到是个2行5列的矩阵,这表明检测到了2个目标,每一行表示对应目标的属性,第一列是标签名(就是训练的时候的类别标签序号,这里采用官方的yolov5s.pt进行检测,0对应‘person’),后面四列依次为xcenter ycenter w h(框中心的x、y坐标,以及框的宽、高),均为归一化数值。

2.检测图片保存

       工程本身并不具有保存实时检测逐帧图片的功能,因此需要自行添加一些代码。

       首先定义图片保存路径:

####################################保存实时检测图片################################
pic_dir = str(save_dir) + '/pic'
if not os.path.exists(pic_dir):
    os.makedirs(pic_dir)
pic_path = pic_dir + '\\' + str(p.stem) + ('' if dataset.mode == 'image' else f'_{frame}')
##################################################################################

        注意添加位置为detect()函数中位置定义部分:

使用YOLOv5实现实时目标检测结果保存

       然后添加帧保存代码

##############################只保存含目标的实时检测图片#################################
pic = (int(xyxy[0].item()) + int(xyxy[2].item())) / 2
if pic != 0:
    cv2.imwrite(pic_path + f'{p.stem}.jpg', im0)
else:
    im1 = cv2.imread('no.jpg', 1)
    cv2.imwrite(pic_path + f'{p.stem}.jpg', im1)
#####################################################################################

       注意添加位置为detect()函数中写结果部分:

使用YOLOv5实现实时目标检测结果保存

       仍然通过命令行运行代码(直接运行也能保存图片)这样既能保存标签又能保存图片,而且两者是相对应的,方便调用。

python detect.py --weights yolov5s.pt --source 0 --save-txt

       运行后可以看到检测结果中有三个文件,标签、帧图片、实时检测视频。

使用YOLOv5实现实时目标检测结果保存

       pic文件夹中是所有包含目标的帧,可以发现,pic中图片数量和labels中标签数量相同,而且是一一对应的关系。

3.保存所有帧

       上述方法只能保存包含目标的帧,这是因为保存相关的代码添加在for循环下,这就导致只有检测到目标,才会执行标签和帧图片的保存。因此如果要保存所有帧(不只是检测到目标的帧),必须将保存图片帧的代码提到for之外。

使用YOLOv5实现实时目标检测结果保存

        注释掉只保存含目标图片的代码(其实留着也行,如果需要目标出现时输出图片中带检测框的话建议留着)

使用YOLOv5实现实时目标检测结果保存

        添加代码:

# ##################################保存所有检测图片######################################
cv2.imwrite(pic_path + f'{p.stem}.jpg', im0)
# #####################################################################################

        注意添加位置要在for之外(原因之前讲了)

使用YOLOv5实现实时目标检测结果保存

       仍然通过命令行运行代码(直接运行也能保存图片)这样既能保存标签又能保存图片。

python detect.py --weights yolov5s.pt --source 0 --save-txt

       运行后可以看到检测结果中有三个文件,标签、帧图片、实时检测视频。

使用YOLOv5实现实时目标检测结果保存

       此时,pic文件夹中就包含了所有帧的图片(目标出现时不带检测框)。

       再次说明,如果需要目标出现时输出图片中带检测框的话保留2中帧保存的代码即可(因为含目标的帧保存代码在3中保存代码之后执行,但保存图片的名称相同,因此会把不带检测框的图片覆盖掉)。

求学路上,你我共勉(๑•̀ㅂ•́)و✧文章来源地址https://www.toymoban.com/news/detail-439092.html

到了这里,关于使用YOLOv5实现实时目标检测结果保存的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 使用YOLOv5实现图片、视频的目标检测

    接下来我将从官方代码开始,一步一步展示如何进行图片、视频识别 首先从GitHub下载官方代码(也可以从下面链接获取): 链接:https://pan.baidu.com/s/16wzV899D90TY2Xwhx4TwhA 提取码:vzvj (你的环境名可能和我不一样) 可以看到 \\\'--weights\\\' 参数(参数解读详见4.a)的默认值为\\\'yolov

    2023年04月15日
    浏览(34)
  • yolov5实现目标检测系统(使用线程池)

    该系统包含以下几个部分: 从摄像头中读取数据 主线程将数据输出到窗口 后台线程完成计算机视觉的目标检测过程,并且将结果共享给主线程 主线程将结果画在输出图像上 下载yolvo5: YOLOv5的源码放在 Github 地址:https://github.com/ultralytics/yolov5 我使用到的是 yolov5s.pt,yolvo5学习

    2024年02月16日
    浏览(32)
  • Realsense D435i Yolov5目标检测实时获得目标三维位置信息

    - Colorimage: - Colorimage and depthimage: 1.一个可以运行YOLOv5的python环境 2.一个realsense相机和pyrealsense2库 在下面两个环境中测试成功 win10 python 3.8 Pytorch 1.10.2+gpu CUDA 11.3 NVIDIA GeForce MX150 ubuntu16.04 python 3.6 Pytorch 1.7.1+cpu 修改模型配置文件,以yolov5s为例。 如果使用自己训练的模型,需要进

    2024年02月04日
    浏览(47)
  • c++读取yolov5模型进行目标检测(读取摄像头实时监测)

    文章介绍 本文是篇基于yolov5模型的一个工程,主要是利用c++将yolov5模型进行调用并测试,从而实现目标检测任务 任务过程中主要重点有两个,第一 版本问题,第二配置问题 一,所需软件及版本       训练部分 pytorch==1.13.0  opencv==3.4.1   其他的直接pip即可       c++部署 

    2024年02月07日
    浏览(34)
  • 【YOLOv8】实战一:手把手教你使用YOLOv8实现实时目标检测

    ‍‍🏡博客主页: virobotics的CSDN博客:LabVIEW深度学习、人工智能博主 🎄所属专栏:『LabVIEW深度学习实战』 🍻上期文章: LabVIEW+OpenCV快速搭建人脸识别系统(附源码)) 📰如觉得博主文章写的不错或对你有所帮助的话,还望大家多多支持呀! 欢迎大家✌关注、👍点赞、✌收

    2024年02月02日
    浏览(40)
  • 深度学习||YOLO(You Only Look Once)深度学习的实时目标检测算法(YOLOv1~YOLOv5)

    目录 YOLOv1: YOLOv2: YOLOv3: YOLOv4: YOLOv5: 总结: YOLO(You Only Look Once)是一系列基于深度学习的实时目标检测算法。 自从2015年首次被提出以来,YOLO系列不断发展,推出了多个版本,包括YOLOv1, YOLOv2, YOLOv3, YOLOv4, 和YOLOv5等。下面是对YOLO系列的详解: 提出时间 : 2015年。 主要贡献 :

    2024年02月20日
    浏览(45)
  • PYTHON+YOLOV5+OPENCV,实现数字仪表自动读数,并将读数结果进行输出显示和保存

    最近完成了一个项目,利用python+yolov5实现数字仪表的自动读数,并将读数结果进行输出和保存,现在完成的7788了,写个文档记录一下, 若需要数据集和源代码可以私信。 最后实现的结果如下: 首先查阅文献和文档,好家伙,不看不知道,做相似项目的很多资料都是硕士研

    2024年02月03日
    浏览(39)
  • 吸烟检测从零开始使用YOLOv5+PyQt5+OpenCV实现(支持图片、视频、摄像头实时检测)

    全流程 教程,从数据采集到模型使用到最终展示。若有任何疑问和建议欢迎评论区讨论。 先放上最终实现效果 检测效果 由上图我们可以看到,使用YOLOV5完成了吸烟的目标识别检测,可以达到mAP可达85.38%。通过对吸烟的自动检测可以方便商场、医院、疗养院等公共场合进行禁

    2024年02月09日
    浏览(43)
  • YOLOv5实现目标检测

    YOLOv5 🚀 是COCO数据集上预处理的一系列对象检测架构和模型,代表Ultralytics对未来视觉人工智能方法的开源研究,融合了数千小时研究和开发过程中积累的经验教训和最佳实践。 本文用来记录第一次使用 YOLOv5实现: 视频目标检测 摄像头目标检测 博主所使用的环境是win10 +

    2024年02月09日
    浏览(31)
  • YOLOv5保存数据增强结果

    前言 本篇不会讲过多的原理,因为网上有很多关于YOLOv5的数据增强的原理,讲的都很详细,但是似乎找不到有关将增强结果保存到文件夹的笔记。 可能也是因为用途比较少,刚好我需要使用一些增强的数据所以琢磨研究了怎么保存其结果(刚开始是尝试调用有关函数进行使

    2024年02月06日
    浏览(33)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包