python3GUI--基于PyQt5+DeepSort+YOLOv8智能人员入侵检测系统(详细图文介绍)
文章目录
- 一.前言
- 二.技术介绍
- 1.PyQt5
- 2.DeepSort
- 3.卡尔曼滤波
- 4.YOLOv8
- 5.SQLite3
- 6.多线程
- 7.入侵人员检测
- 8.ROI区域
- 三.核心功能
- 1.登录注册
- 1.登录
- 2.注册
- 2.主界面
- 1.主界面简介
- 2.数据输入
- 3.参数配置
- 4.告警配置
- 5.操作控制台
- 6.核心内容显示区域
- 7.检测结果表格
- 8.入侵人员信息表格
- 9.日志输出区域
- 10.系统功能总览
- 四.总结
本系统使用DeepSort对目标进行追踪,支持ROI区域告警,日志导出、加入了登录系统,欢迎了解!
基于PyQt5+DeepSort+YOLOv8智能人员入侵检测系统
一.前言
本次使用PyQt5+DeepSort实现了一个智能人员入侵检测系统,系统包括多个区域支持ROI感兴趣区域标注告警,支持展示区域内标签显隐控制,自动统计全部目标以及ROI区域内目标,支持数据导出、入侵人员照片查看,动态阈值调整。
二.技术介绍
1.PyQt5
PyQt5 是一套用于创建跨平台桌面应用程序的 Python GUI 工具包,它是 Qt 应用框架的 Python 绑定。通过 PyQt5,开发者可以使用 Python 编写具有现代图形界面的应用程序,支持丰富的控件、信号与槽机制、窗口管理、事件处理等功能。它兼容主流操作系统(如 Windows、macOS 和 Linux),适用于开发各种规模的桌面软件,常与 Qt Designer 配合使用以加快开发效率。
2.DeepSort
DeepSort(Deep Simple Online and Realtime Tracking)是一种基于深度学习的多目标跟踪算法,它在原始 SORT(Simple Online and Realtime Tracking)算法的基础上引入了外观特征提取器,通过结合目标的运动信息(卡尔曼滤波)和外观特征(由深度神经网络提取)来进行数据关联,从而在遮挡、目标重叠等复杂场景中实现更稳健的跟踪。DeepSort 通常与目标检测器(如 YOLO)结合使用,广泛应用于视频监控、行为识别等实际场景中。
3.卡尔曼滤波
卡尔曼滤波(Kalman Filter)是一种基于线性系统状态空间模型的递归估计算法,广泛用于对动态系统的状态进行预测和修正。它通过结合系统的预测模型和带噪声的观测数据,在每一步动态更新状态估计,从而实现对目标位置、速度等变量的高精度跟踪。卡尔曼滤波具有计算效率高、实时性强的优点,广泛应用于导航、目标跟踪、控制系统和金融预测等领域。
4.YOLOv8
YOLOv8(You Only Look Once version 8)是由 Ultralytics 推出的最新一代实时目标检测模型,属于 YOLO 系列的改进版本。相比前代模型,YOLOv8 在精度、速度和灵活性上都有显著提升,支持目标检测、图像分割、姿态估计等多任务处理。它采用了更加高效的网络结构和训练策略,并提供开箱即用的 Python 接口和命令行工具,适用于边缘设备和云端部署,广泛应用于安防监控、自动驾驶、工业检测等场景。
5.SQLite3
SQLite3 是一个轻量级、嵌入式的关系型数据库管理系统,遵循ACID事务规范,使用文件作为数据库存储形式,具有零配置、无需服务器的特点。它被广泛应用于移动设备、桌面软件、嵌入式系统和小型网站等场景中,特别适合对资源占用要求较低、部署简便的本地数据存储需求。在 Python 中,sqlite3 模块作为标准库提供,允许开发者方便地在应用中进行数据库操作,如创建表、插入数据、执行查询等。
6.多线程
PyQt5 的多线程通常通过 QThread 类实现,它允许在 GUI 程序中运行耗时的操作而不阻塞主线程(即界面线程),从而保持界面响应。使用 PyQt5 的多线程方法通常有两种方式:继承 QThread 或使用 QRunnable 搭配 QThreadPool。推荐方式是将耗时任务写在一个独立的工作对象中,并通过 moveToThread() 将其移到子线程中运行,同时使用信号(pyqtSignal)与主线程通信。这种方式更加安全、结构清晰,适合复杂项目的线程管理。
7.入侵人员检测
入侵人员检测是指通过监控系统(如视频监控、红外传感器、雷达等)对特定区域进行实时监测,自动识别和判断是否有未经授权的人员进入。该技术广泛应用于安防领域,利用图像识别、行为分析等算法,在检测到异常入侵行为时,及时发出警报或联动安保措施,提高区域安全性和响应效率。
8.ROI区域
ROI(Region of Interest,感兴趣区域)是指在图像或视频中指定的特定区域,用于重点处理或分析。在图像处理和计算机视觉中,ROI 可以帮助算法聚焦于关键部分,提高处理效率和准确性。例如,在人脸识别中,ROI 可能仅为图像中的人脸区域,从而避免对背景进行无用计算。通过设定 ROI,可以节省计算资源,提升系统性能。
三.核心功能
1.登录注册
1.登录
软件启动后首先进入登录页面,用户需要输入正确的用户名和密码才能使用本系统的正式功能,登录页面整体采用了垂直布局,局部采用了水平布局,登录界面简约不简单,登录功能后端采用SQLite3本地文件型数据库存储用户信息,每次登录都是通过查库进行验证的,实现了流程标准化。
2.注册
没有账号的用户需要进行注册,注册操作流程十分简单,用户点击登录界面的注册按钮就跳转到了注册窗口,用户需要输入自定义的用户名和两次匹配的密码才能完成登录,值得一提的是,成功注册的用户软件会自动填写用户名和密码到登录界面,实现了登录流程路径的简化。
2.主界面
1.主界面简介
成功登陆的用户直接跳转至主界面,主界面右上角会展示当前用户的用户名,单击自己的用户名会弹出二级菜单,菜单包括两个项目:退出登录、退出系统。我们软件的主界面左上角是当前日期时间以及星期、紧挨着的是当前系统的CPU、内存占用情况,这些信息都是1秒刷新一次的。
2.数据输入
在这面板用户可以设置要检测的目标,我们系统是支持多源输入的,输入的数据类型可以是:图片、视频、视频流地址,另外数据输入下方是模型选择,用户可以选择适合当前系统的模型,我们系统内置了YOLOv8n.pt模型,模型位于data/models/目录下,大家可以将自己的模型放置到这个位置,系统会自动识别可以使用的模型,展示到界面上以供用户选择。
3.参数配置
在这个区域用户可以实时调整当前YOLO识别引擎的重叠度(IOU)以及置信度(Conf),通过动态调整这两个值用户能找到适合目标检测的值,我们内置了两个组件分别是spinBox以及slider,用户可以点击spinBox微调或者拖动slider调整对应的数值,两个组件的数值是关联的。
4.告警配置
在这个区域用户可以控制是否进行告警,系统的告警逻辑是:(前置条件:用户要设置ROI区域)-开启告警-ROI区域有人员侵入-发出语音告警消息提示,值得一提的是本系统支持动态调整告警内容,具体的操作流程是:在告警开启情况下,点击蓝色齿轮按钮,在弹出的对话框中输入告警内容,当满足告警条件时,就会使用用户指定的告警内容。
告警的流程图见下图:
5.操作控制台
这个区域是本系统的核心,用户可以在操作台直接与系统进行交互,交互的逻辑就是直接点击按钮进行操作,我们采用了不同颜色和不同类型的按钮实现了目标的功能,比如“导出数据”这个按钮,用户点击后可以选择导出到CSV、Excel、TXT类型的文件里,系统人性化的选择了桌面作为默认路径并且自动命名了目标文件,当用户成功导出后,系统还会询问用户是否打开,用户选择“是”系统就会调用默认的打开方式打开导出的数据文件。
值得一提的是,我们的操作控制台下方设置了多达8个开关按钮用于用户直接和系统交互,开关默认都是打开的,即默认显示所有画面标注内容。
6.核心内容显示区域
这里我们以检测目标视频为例,给大家演示一下具体核心显示区域的作用,我们在左侧“数据输入”选择打开视频,选择好之后系统会自动进行检测,我们在画面上画下ROI区域,然后停止检测,所有的检测结果以及计数统计信息就都展示到界面上了,在ROI区域的目标被判定为入侵人员,系统自动采用红色框来标注,否则就是一般人员,系统采用蓝框标注,每个目标都会被分配ID、系统自动标注目标类别、置信度。
7.检测结果表格
在这个表格中用户可以查看当前画面的所有检测结果数据,检测结果包括:目标ID、置信度、类别、是否为入侵人员以及目标的图像数据,整个表格是支持下拉的,我们采用了自定义的滚动条样式,用户可以拖动目标图像到系统导出数据。
8.入侵人员信息表格
在这个表格区域展示了所有入侵人员的图像以及ID,用户可以比对目标图像以及实时画面检测结果,鼠标放上去会有个发光的效果,表示用户正在和目标进行交互。
另外用户可以点击图像在本地图像查看器中查看目标图像,当然目标图像是临时生成的,所以在tmp目录下,只有点击了图像才会生成图像文件,这样做的目的是避免磁盘重复读写,只操作用户感兴趣的数据。
9.日志输出区域
在这个区域实时展示当前的操作以及告警信息,系统采用不同的日志级别实时展示日志,具体来说是:一般信息采用蓝色、警告信息采用橘黄色、错误信息采用红色,每次产生告警信息时,都会展示具体的入侵人员数量,每次产生新的日志内容时,都会自动展示当前时间精确到秒。
10.系统功能总览
我们用一张图展示当前系统的主要核心功能
四.总结
本次由浅入深地和大家分享了我使用PyQt5+DeepSort+YOLOv8开发的智能人员入侵检测系统,系统相当智能并且包括多个功能区域,支持登录注册功能,欢迎大家前来了解!
相关文章:

python3GUI--基于PyQt5+DeepSort+YOLOv8智能人员入侵检测系统(详细图文介绍)
文章目录 一.前言二.技术介绍1.PyQt52.DeepSort3.卡尔曼滤波4.YOLOv85.SQLite36.多线程7.入侵人员检测8.ROI区域 三.核心功能1.登录注册1.登录2.注册 2.主界面1.主界面简介2.数据输入3.参数配置4.告警配置5.操作控制台6.核心内容显示区域7.检…...

5. TypeScript 类型缩小
在 TypeScript 中,类型缩小(Narrowing)是指根据特定条件将变量的类型细化为更具体的过程。它帮助开发者编写更精确、更准确的代码,确保变量在运行时只以符合其类型的方式进行处理。 一、instanceof 缩小类型 TypeScript 中的 in…...
Python_day48随机函数与广播机制
在继续讲解模块消融前,先补充几个之前没提的基础概念 尤其需要搞懂张量的维度、以及计算后的维度,这对于你未来理解复杂的网络至关重要 一、 随机张量的生成 在深度学习中经常需要随机生成一些张量,比如权重的初始化,或者计算输入…...

【QT】qtdesigner中将控件提升为自定义控件后,css设置样式不生效(已解决,图文详情)
目录 0.背景 1.解决思路 2.详细代码 0.背景 实际项目中遇到的问题,描述如下: 我在qtdesigner用界面拖了一个QTableView控件,object name为【tableView_electrode】,然后【提升为】了自定义的类【Steer_Electrode_Table】&…...

【Docker 02】Docker 安装
🌈 一、各版本的平台支持情况 ⭐ 1. Server 版本 Server 版本的 Docker 就只有个命令行,没有界面。 Platformx86_64 / amd64arm64 / aarch64arm(32 - bit)s390xCentOs√√Debian√√√Fedora√√Raspbian√RHEL√SLES√Ubuntu√√√√Binaries√√√ …...
【大厂机试题+算法可视化】最长的指定瑕疵度的元音子串
题目 开头和结尾都是元音字母(aeiouAEIOU)的字符串为元音字符串,其中混杂的非元音字母数量为其瑕疵度。比如: “a” 、 “aa”是元音字符串,其瑕疵度都为0 “aiur”不是元音字符串(结尾不是元音字符) “…...
【免杀】C2免杀技术(十五)shellcode混淆uuid/ipv6/mac
针对 shellcode 混淆(Shellcode Obfuscation) 的实战手段还有很多,如下表所示: 类型举例目的编码 / 加密XOR、AES、RC4、Base64、Poly1305、UUID、IP/MAC改变字节特征,避开静态签名或 YARA结构伪装PE Stub、GIF/PNG 嵌入、RTF OLE、UUID、IP/MAC看起来像合法文件/数据,弱…...
Java严格模式withResolverStyle解析日期错误及解决方案
在Java中使用DateTimeFormatter并启用严格模式(ResolverStyle.STRICT)时,解析日期字符串"2025-06-01"报错的根本原因是:模式字符串中的年份格式yyyy被解释为YearOfEra(纪元年份),而非…...
Async-profiler 内存采样机制解析:从原理到实现
引言 在 Java 性能调优的工具箱中,async-profiler 是一款备受青睐的低开销采样分析器。它不仅能分析 CPU 热点,还能精确追踪内存分配情况。本文将深入探讨 async-profiler 实现内存采样的多种机制,结合代码示例解析其工作原理。 为什么需要内…...
C++ 使用 ffmpeg 解码 rtsp 流并获取每帧的YUV数据
一、简介 FFmpeg 是一个开源的多媒体处理框架,非常适用于处理音视频的录制、转换、流化和播放。 二、代码 示例代码使用工作线程读取rtsp视频流,自动重连,支持手动退出,解码并将二进制文件保存下来。 注意: 代…...
Java毕业设计:办公自动化系统的设计与实现
JAVA办公自动化系统 一、系统概述 本办公自动化系统基于Java EE平台开发,实现了企业日常办公的数字化管理。系统包含文档管理、流程审批、会议管理、日程安排、通讯录等核心功能模块,采用B/S架构设计,支持多用户协同工作。系统使用Spring B…...

论文笔记:Large Language Models for Next Point-of-Interest Recommendation
SIGIR 2024 1 intro 传统的基于数值的POI推荐方法在处理上下文信息时存在两个主要限制 需要将异构的LBSN数据转换为数字,这可能导致上下文信息的固有含义丢失仅依赖于统计和人为设计来理解上下文信息,缺乏对上下文信息提供的语义概念的理解 ——>使用…...

LeetCode 2894.分类求和并作差
目录 题目: 题目描述: 题目链接: 思路: 思路一详解(遍历 判断): 思路二详解(数学规律/公式): 代码: Java思路一(遍历 判断&a…...
n8n:解锁自动化工作流的无限可能
在当今快节奏的数字时代,无论是企业还是个人,都渴望提高工作效率,减少重复性任务的繁琐操作。而 n8n,这个强大的开源自动化工具,就像一位智能的数字助手,悄然走进了许多人的工作和生活,成为提升…...
链结构与工作量证明7️⃣:用 Go 实现比特币的核心机制
链结构与工作量证明:用 Go 实现比特币的核心机制 如果你用 Go 写过区块、算过哈希,也大致理解了非对称加密、数据序列化这些“硬核知识”,那么恭喜你,现在我们终于可以把这些拼成一条完整的“区块链”。 不过别急,这一节我们重点搞懂两件事: 区块之间是怎么连接成“链”…...
CMake系统学习笔记
CMake系统学习笔记 基础操作 最基本的案例 // code #include <iostream>int main() {std::cout << "hello world " << std::endl;return 0; }// CMakeLists.txt cmake_minimum_required(VERSION 3.0)# 定义当前工程名称 project(demo)add_execu…...

CCF 开源发展委员会 “开源高校行“ 暨红山开源 + OpenAtom openKylin 高校行活动在西安四所高校成功举办
点击蓝字 关注我们 CCF Opensource Development Committee CCF开源高校行 暨红山开源 openKylin 高校行 西安站 5 月 26 日至 28 日,CCF 开源发展委员会 "开源高校行" 暨红山开源 OpenAtom openKylin 高校行活动在西安四所高校(西安交通大学…...
【Go语言基础【6】】字符串格式化说明
文章目录 零、格式化常用场景一、Go 字符串格式化核心概念二、常用格式化占位符1. 整数类型2. 浮点数类型3. 字符串与布尔类型4. 指针与通用类型 三、宽度与精度控制1. 宽度控制2. 精度控制(浮点数/字符串) 零、格式化常用场景 数值转字符串:…...
调试快捷键 pycharm vscode
目录 调试快捷键 pycharm vscode 修改快捷键 方法 1:通过菜单打开 方法 2:用快捷键打开 调试快捷键 pycharm Resume Program F9 Step Over F8 两个离的比较近,比较方便,比vscode的好。 vscode Continue F5 改为F9 S…...

RabbitMQ work模型
Work 模型是 RabbitMQ 最基础的消息处理模式,核心思想是 多个消费者竞争消费同一个队列中的消息,适用于任务分发和负载均衡场景。同一个消息只会被一个消费者处理。 当一个消息队列绑定了多个消费者,每个消息消费的个数都是平摊的&a…...

基于微信小程序的作业管理系统源码数据库文档
作业管理系统 摘 要 随着社会的发展,社会的方方面面都在利用信息化时代的优势。互联网的优势和普及使得各种系统的开发成为必需。 本文以实际运用为开发背景,运用软件工程原理和开发方法,它主要是采用java语言技术和微信小程序来完成对系统的…...
C++参数传递 a与a的区别
在 C 中,&a(引用)和 a(值传递) 的关键区别在于 参数如何传递给函数,以及由此引发的 性能、语义和安全问题。 最核心的在于你想不想传入的参数被改变,如果想,就用参数传递&#…...

CSS(2)
文章目录 Emmet语法快速生成HTML结构语法 Snipaste快速生成CSS样式语法快速格式化代码 快捷键(VScode)CSS 的复合选择器什么是复合选择器交集选择器后代选择器(重要)子选择器(重要)并集选择器(重要)**链接伪类选择器**focus伪类选…...
Linux--vsFTP配置篇
一、vsFTP 简介 vsftpd(Very Secure FTP Daemon)是 Linux 下常用的 FTP 服务程序,具有安全性高、效率高和稳定性好等特点。支持匿名访问、本地用户登录、虚拟用户等多种认证方式,并可灵活控制权限。 二、安装与启动 1. 检查是否已…...

【RabbitMQ】- Channel和Delivery Tag机制
在 RabbitMQ 的消费者代码中,Channel 和 tag 参数的存在是为了实现消息确认机制(Acknowledgment)和精细化的消息控制。 Channel 参数 作用 Channel 是 AMQP 协议的核心操作接口,通过它可以直接与 RabbitMQ 交互: 手…...
.Net Framework 4/C# 面向对象编程进阶
一、继承 (一)使用继承 子类可以继承父类原有的属性和方法,也可以增加原来父类不具备的属性和方法,或者直接重写父类中的某些方法。 C# 中使用“:”来表示两个类的继承。子类不能访问父类的私有成员,但是可以访问其公有成员,即只要使用 public 声明类成员,就既可以让一…...

NLP学习路线图(三十四): 命名实体识别(NER)
一、命名实体识别(NER)是什么? 命名实体识别(Named Entity Recognition, NER)是自然语言处理中的一项关键序列标注任务。其核心目标是从非结构化的文本中自动识别出特定类别的名词性短语,并将其归类到预定义的类别中。 核心目标:找到文本中提到的命名实体,并分类。 典…...

【HTML】HTML 与 CSS 基础教程
作为 Java 工程师,掌握 HTML 和 CSS 也是需要的,它能让你高效与前端团队协作、调试页面元素,甚至独立完成简单页面开发。本文将用最简洁的方式带你掌握核心概念。 一、HTML,网页骨架搭建 核心概念:HTML通过标签定义内…...
【NLP】 38. Agent
什么是 Agent? 一个 Agent 就是能够 理解、思考,并且进行世界交互 的模型系统,并不是纯粹的 prompt 返回器。 它可以: 读取外部数据(文件/API)使用记忆进行上下文维持用类Chain-of-Thought (CoT)方式进行…...

Windows开机自动启动中间件
WinSW(Windows Service Wrapper 是一个开源的 Windows 服务包装器,它可以帮助你将应用程序打包成系统服务,并实现开机自启动的功能。 一、下载 WinSW 下载 WinSW-x64.exe v2.12.0 (⬇️ 更多版本下载) 和 sample-minimal.xml 二、配置 WinS…...