深度学习中算法建立识别车辆 目标跟踪数据集 YOLO行人等多目标的实时检测和跟踪,通过PyQt5设计了简约的系统UI界面
使用深度学习中的YOLOv5和OCTrack算法建立识别车辆、行人等多目标的实时检测和跟踪通过PyQt5设计了简约的系统UI界面行人车辆多目标实时检测与跟踪系统文章目录使用深度学习中的YOLOv5和OCTrack算法建立识别车辆、行人等多目标的实时检测和跟踪通过PyQt5设计了简约的系统UI界面1. 安装依赖2. 准备数据集和模型3. 实现检测与跟踪使用 YOLOv5 和 OCTrack4. 实时处理视频流5. 构建 GUI 应用程序6. 运行应用程序使用深度学习中的YOLOv5和OCTrack算法实现车辆、行人等多目标的实时检测和跟踪并利用PyQt5设计了简约的系统UI界面。在界面中您可以选择自己的视频文件进行检测和跟踪也可以通过电脑自带的摄像头进行实时处理。此外您还可以更换自己训练的yolov5模型进行自己数据的跟踪。步骤和代码示例1. 安装依赖确保安装了必要的库pipinstallultralytics opencv-python pyqt5 numpy2. 准备数据集和模型假设你已经有了训练好的 YOLOv5 模型或者使用预训练的模型。3. 实现检测与跟踪使用 YOLOv5 和 OCTrack首先我们需要加载 YOLOv5 模型并设置 OCTrack 跟踪器。fromultralyticsimportYOLOimportcv2importnumpyasnpfromoctrackimportOCTrack# 加载 YOLOv5 模型modelYOLO(yolov5s.pt)# 使用预训练的 YOLOv5 模型# 初始化 OCTrack 跟踪器trackerOCTrack(modelmodel,devicecpu)4. 实时处理视频流接下来编写代码来处理视频流无论是文件还是摄像头。defprocess_video(video_source):capcv2.VideoCapture(video_source)whileTrue:ret,framecap.read()ifnotret:break# 使用 OCTrack 进行检测和跟踪detectionstracker.update(frame)# 绘制边界框和 IDfordetectionindetections:x1,y1,x2,y2,iddetection[:5]cv2.rectangle(frame,(int(x1),int(y1)),(int(x2),int(y2)),(0,255,0),2)cv2.putText(frame,fID:{int(id)},(int(x1),int(y1)-10),cv2.FONT_HERSHEY_SIMPLEX,0.9,(0,255,0),2)# 显示帧cv2.imshow(Multi-Object Tracking,frame)ifcv2.waitKey(1)0xFFord(q):breakcap.release()cv2.destroyAllWindows()# 示例使用摄像头process_video(0)# 0 表示默认摄像头5. 构建 GUI 应用程序使用 PyQt5 构建一个简单的 GUI 应用程序用于选择视频文件或打开摄像头并显示检测结果。fromPyQt5.QtWidgetsimportQApplication,QMainWindow,QPushButton,QVBoxLayout,QWidget,QLabel,QFileDialog,QComboBoxfromPyQt5.QtGuiimportQImage,QPixmapfromPyQt5.QtCoreimportQTimerimportsysimportcv2classMainWindow(QMainWindow):def__init__(self):super().__init__()self.setWindowTitle(行人车辆多目标跟踪系统)self.setGeometry(100,100,800,600)self.labelQLabel(self)self.label.setGeometry(50,50,700,400)self.button_videoQPushButton(选择视频文件,self)self.button_video.setGeometry(300,500,200,50)self.button_video.clicked.connect(self.load_video)self.button_cameraQPushButton(打开摄像头,self)self.button_camera.setGeometry(300,560,200,50)self.button_camera.clicked.connect(self.open_camera)self.timerQTimer(self)self.timer.timeout.connect(self.update_frame)self.setLayout(QVBoxLayout())self.layout().addWidget(self.label)self.layout().addWidget(self.button_video)self.layout().addWidget(self.button_camera)self.capNoneself.frameNonedefload_video(self):file_path,_QFileDialog.getOpenFileName(self,选择视频文件,,Video Files (*.mp4 *.avi))iffile_path:self.capcv2.VideoCapture(file_path)self.timer.start(30)defopen_camera(self):self.capcv2.VideoCapture(0)self.timer.start(30)defupdate_frame(self):ret,self.frameself.cap.read()ifret:# 处理帧例如使用 YOLOv5 和 OCTrackdetectionstracker.update(self.frame)# 绘制边界框和 IDfordetectionindetections:x1,y1,x2,y2,iddetection[:5]cv2.rectangle(self.frame,(int(x1),int(y1)),(int(x2),int(y2)),(0,255,0),2)cv2.putText(self.frame,fID:{int(id)},(int(x1),int(y1)-10),cv2.FONT_HERSHEY_SIMPLEX,0.9,(0,255,0),2)# 将 OpenCV 图像转换为 Qt 格式height,width,channelself.frame.shape bytes_per_line3*width q_imgQImage(self.frame.data,width,height,bytes_per_line,QImage.Format_RGB888).rgbSwapped()self.label.setPixmap(QPixmap.fromImage(q_img))if__name____main__:appQApplication(sys.argv)windowMainWindow()window.show()sys.exit(app.exec_())6. 运行应用程序运行上述代码启动 GUI 应用程序。可通过界面选择视频文件或打开摄像头进行实时处理并查看检测和跟踪的结果。

相关新闻

Steve Brunton | Reinforcement Learning | 笔记 | Lecture 3 | 深度强化学习在流体动力学与控制中的应用

Steve Brunton | Reinforcement Learning | 笔记 | Lecture 3 | 深度强化学习在流体动力学与控制中的应用

目录前言1. 引言2. 强化学习框架回顾3. 流体动力学中的应用分类4. 鱼群游动研究5. 强化学习加速计算6. 综述与常用算法7. 流动控制8. 非稳态流体环境中的飞行控制9. 总结结语参考前言 学习 Steven Brunton 讲授的强化学习入门概述视频,本篇文章记录第三讲&#xff1…

2026/10/10 8:54:30 阅读更多 →
Steve Brunton | Reinforcement Learning | 笔记 | Lecture 4 | 强化学习系列:方法概览

Steve Brunton | Reinforcement Learning | 笔记 | Lecture 4 | 强化学习系列:方法概览

目录前言1. 引言2. 强化学习核心概念回顾3. 模型驱动强化学习4. 模型无关强化学习5. 深度强化学习方法6. 总结与展望结语参考前言 学习 Steven Brunton 讲授的强化学习入门概述视频,本篇文章记录第四讲:强化学习系列:方法概览,记录…

2026/10/10 8:54:30 阅读更多 →
Rocket.Chat 的 `@rocket.chat/peggy-loader`:在 Webpack 构建中把 Peggy 语法文件编译为 ES 模块解析器

Rocket.Chat 的 `@rocket.chat/peggy-loader`:在 Webpack 构建中把 Peggy 语法文件编译为 ES 模块解析器

即时通讯后端前端 【免费下载链接】Rocket.Chat The Secure CommsOS™ for mission-critical operations 项目地址: https://gitcode.com/GitHub_Trending/ro/Rocket.Chat 点击查看 免费下载 rocket.chat/peggy-loader 是 Rocket.Chat 官方维护的 Peggy&#xff08…

2026/10/10 8:54:30 阅读更多 →

最新新闻

91行代码撑起创意赛:约束下的编程取舍与贪吃蛇实战

91行代码撑起创意赛:约束下的编程取舍与贪吃蛇实战

91行代码为什么能撑起一场创意赛?我在第一次看到比赛通知时,第一反应是"91这个数字是不是写错了"。后来跟主办方聊天才知道,他们故意不用100这种整数,想传达的意思很简单:代码写多容易,写少难&am…

2026/10/10 10:21:06 阅读更多 →
归并排序详解:分治原理、稳定排序特性与工程应用

归并排序详解:分治原理、稳定排序特性与工程应用

1. 归并排序到底在解决什么问题——分治思路的底层逻辑1.1 稳定排序的分治框架是怎么来的归并排序(Merge Sort)可以说是排序算法里最“稳”的一位选手。这里的“稳”有两层意思:一是时间复杂度稳定,不管数据是正序、倒序还是完全随…

2026/10/10 10:21:06 阅读更多 →
ASP本地数据库查询工具:Access/SQL Server离线调试方案

ASP本地数据库查询工具:Access/SQL Server离线调试方案

简介:这是一款面向ASP开发者与Web后端初学者的本地数据库查询辅助工具,聚焦于简化ASP环境下的数据库连接、SQL构建与结果管理等高频操作,特别适用于教学演示、小型项目快速验证及Access/SQL Server本地调试场景。资源包共2000个文件&#xff…

2026/10/10 10:21:06 阅读更多 →
iOS蓝牙开发实战:从CoreBluetooth状态机到数据读写完整指南

iOS蓝牙开发实战:从CoreBluetooth状态机到数据读写完整指南

简介:这份资源面向具备一定iOS基础、希望系统掌握蓝牙低功耗开发的移动端开发者,围绕苹果Core Bluetooth框架,讲解CBCentralManager、CBPeripheral、CBService、CBCharacteristic及GATT协议等核心概念,帮助读者理清中央设备扫描、…

2026/10/10 10:21:06 阅读更多 →
SSH从入门到精通:密钥认证、安全加固与端口转发实战指南

SSH从入门到精通:密钥认证、安全加固与端口转发实战指南

1. 为什么每个和服务器打交道的人都绕不开SSH刚入行那会儿,我第一次拿到一台云主机的公网地址和root密码,坐在工位上盯着终端发呆——这玩意儿怎么连?当时带我的前辈甩过来一句“用SSH啊”,然后就忙自己的去了。我花了整整一个下午…

2026/10/10 10:21:06 阅读更多 →
Java+Selenium驱动Chrome 118.0.5958.0实战指南

Java+Selenium驱动Chrome 118.0.5958.0实战指南

简介:本资源是一套面向Java开发者与自动化测试初学者的Selenium爬虫实战教学包,聚焦浏览器自动化采集场景,解决Chrome版本与驱动器严格匹配难、环境配置易出错、代码调试无参照等常见痛点。资源共56个文件,涵盖9个核心Java源码、9…

2026/10/10 10:20:06 阅读更多 →

日新闻

卫星轨道分类全解析:从LEO到GEO的选型逻辑与工程实践

卫星轨道分类全解析:从LEO到GEO的选型逻辑与工程实践

1. 从“卫星轨道分类”这个标题说起:为什么值得花时间搞懂第一次接触“卫星轨道分类”这个概念,很多人会觉得它离自己很远——不就是天上的星星怎么转吗?但如果你正在做航天任务规划、遥感数据接收、星座设计,甚至只是准备一场航天…

2026/10/10 0:00:39 阅读更多 →
Spring AOP 核心原理与实战:从概念到日志切面落地

Spring AOP 核心原理与实战:从概念到日志切面落地

1. 从一个真实痛点说起:为什么你的代码里到处都是重复逻辑刚入行那会儿,我写过一个用户管理模块,注册、登录、改密码、注销四个接口。每个接口里都塞了几乎一样的日志打印、参数校验、事务开启和提交。当时觉得没什么,能跑就行。直…

2026/10/10 0:00:40 阅读更多 →
Python招聘数据采集与分析可视化:从采集清洗到薪资技能城市可视化全链路

Python招聘数据采集与分析可视化:从采集清洗到薪资技能城市可视化全链路

简介:这是一套面向计算机相关专业学生与项目实战学习者的Python数据采集与分析可视化完整项目,以Boss直聘岗位数据为对象,适合用作毕业设计、课程设计或期末大作业。资源包共38个文件,约246KB,以13个py源码文件为核心&…

2026/10/10 0:00:40 阅读更多 →

周新闻

KT148A语音芯片外挂8002D功放的工程实践指南

KT148A语音芯片外挂8002D功放的工程实践指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/8 15:26:32 阅读更多 →
LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/10 1:36:08 阅读更多 →
ARM架构深度解析:从RISC设计理念到交叉编译实战

ARM架构深度解析:从RISC设计理念到交叉编译实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/9 10:11:06 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/10 5:23:50 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/9 21:32:20 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/9 6:17:20 阅读更多 →