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

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