基于pyside6界面与yolov5实现自动结束功能-程序员宅基地

技术标签: YOLO  算法  yolov5  界面设计  python  pycharm  开发语言  

对于自动结束功能我会介绍下面三种方法来实现功能

1. 基于时间自动结束

这种方法适用于需要在固定时间后自动停止识别任务的场景,例如监控视频分析,限制任务运行时间以避免资源过度占用。

如何使用:

  1. 使用 QTimer 设置一个定时器,当达到预定时间后触发一个事件来停止识别。
  2. 在类的初始化方法中设置定时器并指定超时时间。
  3. 在启动识别的方法中启动这个定时器,并在停止识别的方法中确保停止定时器。

优势:

  • 可以精确控制识别任务的持续时间。
  • 适用于需要定时执行或结束任务的应用。

下面我会用一段简单的代码做示例

from PySide6.QtCore import QTimer

class Maindz(QFrame):
    def __init__(self):
        super(Maindz, self).__init__()
        self.auto_stop_timer = QTimer()
        self.auto_stop_timer.timeout.connect(self.stop_recognition)
        self.auto_stop_duration = 600000  # 10分钟,以毫秒为单位

    def start_recognition(self):
        self.auto_stop_timer.start(self.auto_stop_duration)
        # 启动识别代码

    def stop_recognition(self):
        self.auto_stop_timer.stop()
        # 停止识别代码

2. 基于处理的帧数自动结束

这种方法适合于需要处理固定数量的视频帧后结束任务的情况,例如测试算法性能时只分析一定数量的数据。

如何使用:

  1. 在类中设置一个计数器来追踪处理的帧数。
  2. 在更新帧的处理函数中增加计数,并在达到设定的帧数时调用停止识别的方法。
  3. 保持跟踪处理的帧数,并在适当的时候停止。

优势:

  • 确保处理特定数量的帧,有助于在调试和测试时保持一致性。
  • 方便在性能评估时进行控制
  • 下面写一段代码来表示这些作用:
  • class Maindz(QFrame):
        def __init__(self):
            super(Maindz, self).__init__()
            self.frame_count = 0
            self.max_frames = 300
    
        def process_frame(self):
            # 处理帧的代码
            self.frame_count += 1
            if self.frame_count >= self.max_frames:
                self.stop_recognition()
    
        def stop_recognition(self):
            # 停止识别代码

3. 基于特定目标检测自动结束

这种方法适用于当检测到特定目标时需要立即停止识别的场景,如安全监控系统在检测到入侵者时需立刻响应。

如何使用:

  1. 在更新帧的处理函数中加入目标检测逻辑。
  2. 当检测到特定目标时,调用停止识别的方法。
  3. 在停止方法中更新界面状态并进行必要的后续操作。

优势:

  • 灵活响应特定的目标检测,适用于需要特定响应的应用场景。
  • 可以即时中断识别过程,节省资源。

下面加入一段代码来详细说明一下

class Maindz(QFrame):
    def __init__(self):
        super(Maindz, self).__init__()

    def detect_objects(self, frame):
        detections = self.detector.detect(frame)
        for detection in detections:
            if detection['class_id'] == target_class_id:
                self.stop_recognition()
                break

    def stop_recognition(self):
        # 停止识别代码

总结 所有这些方法都涉及到合理使用 QTimer 和连接相应的信号与槽,以及在适当的时刻通过调用相关函数来控制识别过程的开始和结束。通过这样的设计,你可以根据具体需求灵活调整识别任务的行为,以适应不同的应用场景。

布置一个作业,有一个基于pyside6 和 yolov5s.pt的py文件现在已经实现了可以实时返回数据和并且可以检测出坐标值,物品名现在需要实现一个自动结束功能,想写的可以私聊我

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/wangyuchen00/article/details/138009499

智能推荐

【通信原理】五、模拟调制系统_vsb系统仿真-程序员宅基地

文章浏览阅读1.9k次,点赞3次,收藏15次。AM、DSB、SSB、FM、包络检波、相干解调_vsb系统仿真

通过OpenSSL获取证书扩展属性之二:“密钥用法”和"增强型密钥用法"_openssl 增强型密钥用法-程序员宅基地

文章浏览阅读1.1w次。介绍如何使用Openssl解析CA证书、获取“密钥用法”和“增强型密钥用法”扩展属性。_openssl 增强型密钥用法

E: 仓库 “http://ppa.launchpad.net/fcitx-team/nightly/ubuntu bionic Release” 没有 Release 文件的解决办法-程序员宅基地

文章浏览阅读3k次,点赞6次,收藏5次。ubuntu18.04在运行sudo apt-get update命令时出现以下错误:E: 仓库 “http://ppa.launchpad.net/fcitx-team/nightly/ubuntu bionic Release” 没有 Release 文件解决办法:打开软件更新>其他软件,将做标记的两个勾选去掉问题解决...

资金账户、证券账户及银行账户_证券账户与资金账户与银行账户区别-程序员宅基地

文章浏览阅读1w次,点赞5次,收藏10次。1、 资金账户(证券公司开立的,与券商直接相关)资金账户是你登陆证券交易结算资金账户的凭证,你在一家证券公司开户后,就拥有了这家证券公司的资金账户,你平时用这个账户进行股票的买卖和操作。这是证券公司专门用来记录你资金流转的账户,但是你的资金并不在证券公司里,而是放在和证券公司合作的第三方存管银行账户里,你交易的时候通过交易软件把钱转到你的资金账户进行股票交易,这是为了保护投资者的利益,防止证券公司挪用和非法占有客户的资金。资金账号,是一种股市上的专业术语,一般指的是用于买卖股票的股东资金账户上的账..._证券账户与资金账户与银行账户区别

重置Catalyst 6500/6000 和 Cisco 7600 系列交换机Consle口密码详解_sys-sp-3-logger_flushed system was paused for-程序员宅基地

文章浏览阅读1.1k次。目录说明分解步骤输出示例其他类型的机器简版过程说明在运行 Cisco IOS 系统软件的 Catalyst 6500/6000 和 Cisco 7600 上,其启动顺序与 Cisco 7200 系列路由器有所不同,因为两者的硬件不一样。在您关机并重新开机机箱后,交换机处理器(SP)首先启动。在一小段时间(大约 25 到 60 秒)后,它将控制台所有权转交给路由处理器 (RP (MSFC))。RP 继续加载捆绑的软件映像。请务必在 SP 将控制台控制权转交给 RP 之后立即按 Ctrl-brk。如果您太早_sys-sp-3-logger_flushed system was paused for

MySQl建库建表及增删改查_头歌实践教学平台数据库用户数据库的创建及删除-程序员宅基地

文章浏览阅读427次。通过可视化工具建库建表创建数据库CREATE DATABASE studb2 CHAR SET utf8;切换数据库(使用use 将数据库切换到 studb2)USE studb2 ;在studb2 中创建名为t_stu的表CREATE TABLE t_stu( sid VARCHAR(10) , sname VARCHAR(20), age INT, height FLOAT , weight DOUBLE)CHAR SET utf8_头歌实践教学平台数据库用户数据库的创建及删除

随便推点

AOP与OOP有什么区别,谈谈AOP的原理是什么,大厂Android高级面试题汇总解答-程序员宅基地

文章浏览阅读521次,点赞25次,收藏11次。包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频**

最小费用流_单向图费用流-程序员宅基地

文章浏览阅读1.5k次。单向图#include//每次找费用的最短路,更新残留网络图直到找不到最短路为止#include//最大费用 权值取负值 结果取负值#include#include#includeusing namespace std;const int inf=0x3f3f3f3f;struct Node_单向图费用流

Python中的5个高阶概念属性的知识点!你要了解明白哦!_python属性的五大类-程序员宅基地

文章浏览阅读318次。在现代编程世界中,面向对象编程(OOP)语言在改变软件开发中的设计和实现模式方面发挥了进化作用。作为OOP家族的重要成员,Python在过去10年左右逐渐流行起来。与其他OOP语言一样,Python围绕大量不同的对象操作其数据,包括模块、类和函数。如果您有任何OOP语言的编程经验,您应该知道所有对象都有其内部特征数据,称为字段、属性或属性。在Python中,这些对象绑定的特征数据通常称为属性。在本文中,我将特别在自定义类的上下文中讨论它们。1. 类属性为了更好地管理项目中的数据,我们经常需要_python属性的五大类

python 基于PHP+MySQL的装修网站的设计与实现_python抓取装修需求-程序员宅基地

文章浏览阅读282次。5:系统简介设置:系统管理员应该可以通过系统简介设置功能设置系统前台的系统简介信息,系统前台的系统简介是随后台的变化而变化的,系统简介应该使用编辑器,实现图片,文字,列表,样式等多功能输入。6:系统公告设置:系统管理员应该可以通过系统公告设置功能设置系统前台的系统公告信息,系统前台的系统公告是随后台的变化而变化的,系统公告应该使用编辑器,实现图片,文字,列表,样式等多功能输入。应该都要能修改自己的登录密码,修改后需要重新登录。13:装修效果:员工给客户上传装修效果和装修进度,客户查询。_python抓取装修需求

ubuntu完美的nvidia驱动安装方式(ubuntu16+驱动410+cuda10.0)or(ubuntu16+驱动455+cuda11.1)_乌班图英伟达驱动选着哪个版本-程序员宅基地

文章浏览阅读2k次,点赞4次,收藏5次。ubuntu完美的nvidia驱动安装方式(ubuntu16+驱动410+cuda10.0) 本人卡 GeForce GTX TITAN X1.卸载驱动并重启电脑:sudo apt-get remove --purge nvidia-*sudo apt-get autoremove #特别重要sudo apt-get install -f #特别重要sudo reboot......_乌班图英伟达驱动选着哪个版本