深度学习中算法建立识别车辆 目标跟踪数据集 YOLO行人等多目标的实时检测和跟踪,通过PyQt5设计了简约的系统UI界面

发布时间:2026/10/10 8:55:38

深度学习中算法建立识别车辆 目标跟踪数据集 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 应用程序。可通过界面选择视频文件或打开摄像头进行实时处理并查看检测和跟踪的结果。
延伸阅读

更多相关文章

2026/10/10 8:55:38

MATLAB旋转机械非线性动力学仿真:从转子到齿轮故障诊断

1. 项目背景与整体技术路线做旋转机械动力学仿真的人,迟早会遇到这样一张需求清单:转子动力学、轴承非线性油膜力、齿轮啮合刚度激励、裂纹故障、混沌判别、庞加莱截面。乍看像是三个独立课题硬拼在一起,实际上是一条非常完整的研究主线——从…

2026/10/10 9:51:07

CTF夺旗赛全攻略:从入门到实战的完整指南

1. 先来聊聊CTF到底是什么“游戏”CTF,全称Capture The Flag,直译过来就是“夺旗赛”。网络安全圈子里大家经常说“拿flag”,这个flag就是一段特定格式的字符串,一般长这样:flag{this_is_a_flag}。你在一道题里不断挖掘…

2026/10/10 9:51:07

多智能体系统开发实战:从单Agent瓶颈到LangGraph编排

我最早对多智能体(Multi-Agent)开发产生兴趣,并不是因为看了什么框架宣传,而是被一个非常实际的问题逼的:单个大模型Agent根本撑不住复杂长任务。去年我在搭一个自动生成行业分析报告的工具,最开始只有一个…

2026/10/10 9:51:07

SpringBoot零GPU调用DeepSeek-R1:Java原生大模型推理实战

简介:本资源是一套基于Spring Boot与Spring AI框架调用DeepSeek-R1大模型的本地化部署实践工程,面向Java开发者、AI初学者及中小型企业技术团队,解决云端调用成本高、数据隐私风险大、网络依赖强等实际痛点。压缩包共7个文件(约10…

2026/10/10 9:51:07

Java反序列化漏洞CC1利用链详解:从原理到防御

1. 一次反序列化漏洞的“课前预习”先聊点轻松的。假设你写了一个Java程序,负责把用户对象保存到文件里,方便下次启动时直接恢复。Java的序列化机制能干这事,把对象变成一堆字节,再写进磁盘。下次用的时候,反序列化把这…

2026/10/10 7:31:36

Jev+Agent接管浏览器:browser-use实战与jev-ultrafast性能优化

1. 从“Jev”说起:为什么我要把Agent接进浏览器“Jev”这个词最近在圈子里出现的频率越来越高,很多人第一次听到会以为是某个新模型的名字,其实它更像是一种思路——把Jev模型的能力当作底座,通过Agent的方式去接管浏览器&#xf…

2026/10/9 20:15:56

多智能体集群实战:DeepAgents编排、MCP与A2A协议及Skills体系

1. 从"单兵作战"到"集群协同":多智能体编排到底在解决什么问题如果你最近在折腾 Agent 相关的东西,大概率会有一种感觉:单个 Agent 能做的事情,其实很快就摸到天花板了。你给它一个提示词,挂几个工…

2026/10/8 6:05:44

无源低通滤波器设计实战:从RC到LC,手把手教你避开那些坑

/* 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 0:04:53

从逻辑门到计算机:数字电路核心原理与全加器搭建实战

如果你拆过一台旧电脑的主板,盯着那些黑乎乎的小芯片看上一会儿,可能会冒出同一个疑问:这堆引脚密集的元件,到底是怎么“变”出那么复杂的应用的?答案并不在某个神秘的部件里,而是在所有芯片内部都在反复使…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑