【YOLOv8交通信号灯检测系统】Python源码+PyQt5界面+数据集+训练代码 基于YOLOV8开发车载摄像头交通信号灯智能识别完整项目,搭载PyQt5可视化操作界面

发布时间:2026/8/3 19:22:05
【YOLOv8交通信号灯检测系统】Python源码+PyQt5界面+数据集+训练代码 基于YOLOV8开发车载摄像头交通信号灯智能识别完整项目,搭载PyQt5可视化操作界面 深度学习 YOLO 系列】基于YOLO V8的车载摄像头交通信号灯检测识别系统【python源码Pyqt5界面数据集训练代码】1基于YOLOv8交通信号灯检测识别系统一、项目信息表项目详情参数项目名称YOLOv8车载交通信号灯检测识别系统开发框架Python YOLOv8 PyQt5功能支持单张图片检测、文件夹批量检测、视频文件检测、车载摄像头实时流识别、检测数据表格导出、置信度/IOU手动调节、GPU/CPU推理切换适用场景车载视觉感知、自动驾驶辅助、路口交通信号灯智能识别、交通视觉算法研究、毕业设计检测目标红灯、绿灯、黄灯、倒计时数字、交通标志等路口信号灯目标输入尺寸640×640配套资源完整数据集、YOLO训练代码、PyQt可视化界面全套源码、训练权重best.pt二、数据集配置文件traffic_light.yamlpath:./traffic_light_datasettrain:images/trainval:images/valnc:4names:0:red_light1:green_light2:yellow_light3:countdown三、YOLOv8训练代码 train_traffic.pyfromultralyticsimportYOLOdeftrain_traffic_light():# 加载yolov8s预训练权重modelYOLO(yolov8s.pt)resultsmodel.train(data./traffic_light_dataset/traffic_light.yaml,epochs100,imgsz640,batch12,device0,workers4,lr00.001,augmentTrue,mosaic1.0,patience15,projectruns/train,nametraffic_light_detect,exist_okTrue)metricsmodel.val()print(fmAP0.5{metrics.box.map50:.4f})if__name____main__:train_traffic_light()四、PyQt5完整可视化界面核心代码可直接运行importsysimportcv2importosfromdatetimeimportdatetimefromPyQt5.QtWidgetsimport(QApplication,QMainWindow,QPushButton,QFileDialog,QWidget,QVBoxLayout,QHBoxLayout,QLabel,QDoubleSpinBox,QTableWidget,QTableWidgetItem,QComboBox)fromPyQt5.QtGuiimportQImage,QPixmapfromPyQt5.QtCoreimportQt,QThread,pyqtSignalfromultralyticsimportYOLO# 推理线程防止界面卡顿classDetectThread(QThread):signal_framepyqtSignal(object)signal_tablepyqtSignal(list)def__init__(self,model,source,conf,iou):super().__init__()self.modelmodel self.sourcesource self.confconf self.iouiou self.runningTruedefrun(self):capcv2.VideoCapture(self.source)whileself.runningandcap.isOpened():ret,framecap.read()ifnotret:breakt1datetime.now()resultsself.model.predict(frame,confself.conf,iouself.iou)use_time(datetime.now()-t1).total_seconds()res_frameresults[0].plot()self.signal_frame.emit(res_frame)info[]forboxinresults[0].boxes:clsself.model.names[int(box.cls)]conffloat(box.conf)xyxybox.xyxy.tolist()[0]info.append([round(i,2)foriinxyxy][conf,cls])self.signal_table.emit([info,use_time])cap.release()classTrafficLightWindow(QMainWindow):def__init__(self):super().__init__()self.setWindowTitle(基于YOLOV8的交通信号灯检测识别系统)self.resize(1300,900)self.modelYOLO(best.pt)self.detect_threadNoneself.init_ui()definit_ui(self):centralQWidget()self.setCentralWidget(central)main_layoutQHBoxLayout(central)# 左侧画面显示self.label_showQLabel(图像窗口)self.label_show.setMinimumSize(800,650)# 右侧控制面板right_widgetQWidget()right_layoutQVBoxLayout(right_widget)self.btn_imgQPushButton(选择图片文件)self.btn_img.clicked.connect(self.detect_image)self.btn_folderQPushButton(选择图片文件夹)self.btn_videoQPushButton(选择视频文件)self.btn_camQPushButton(选择相机源摄像头)self.btn_stopQPushButton(停止运行)self.btn_exportQPushButton(导出数据)# 参数调节self.spin_confQDoubleSpinBox()self.spin_conf.setValue(0.45)self.spin_iouQDoubleSpinBox()self.spin_iou.setValue(0.45)# 硬件选择self.combo_deviceQComboBox()self.combo_device.addItems([GPU,CPU])# 添加控件forwin[self.btn_img,self.btn_folder,self.btn_video,self.btn_cam,self.spin_conf,self.spin_iou,self.combo_device,self.btn_stop,self.btn_export]:right_layout.addWidget(w)# 底部表格self.tableQTableWidget()self.table.setColumnCount(6)self.table.setHorizontalHeaderLabels([序号,图片名称,录入时间,识别结果,目标数目,推理用时])total_layoutQVBoxLayout()top_layoutQHBoxLayout()top_layout.addWidget(self.label_show)top_layout.addWidget(right_widget)total_layout.addLayout(top_layout)total_layout.addWidget(self.table)main_layout.addLayout(total_layout)defdetect_image(self):path,_QFileDialog.getOpenFileName(filter图片(*.jpg *.png *.jpeg))ifnotpath:returnconfself.spin_conf.value()iouself.spin_iou.value()t_startdatetime.now()resself.model.predict(path,confconf,iouiou,saveFalse)cost(datetime.now()-t_start).total_seconds()imgcv2.cvtColor(res[0].plot(),cv2.COLOR_BGR2RGB)h,w,cimg.shape qimgQImage(img.data,w,h,w*c,QImage.Format_RGB888)self.label_show.setPixmap(QPixmap.fromImage(qimg))#表格写入rowself.table.rowCount()self.table.insertRow(row)self.table.setItem(row,1,QTableWidgetItem(os.path.basename(path)))self.table.setItem(row,2,QTableWidgetItem(str(datetime.now())[:19]))self.table.setItem(row,5,QTableWidgetItem(f{cost:.4f}s))if__name____main__:appQApplication(sys.argv)winTrafficLightWindow()win.show()sys.exit(app.exec_())五、图片/视频简易推理代码fromultralyticsimportYOLO modelYOLO(best.pt)if__name____main__:#source 支持图片路径、视频路径、摄像头0resultsmodel.predict(sourcetraffic_test.jpg,conf0.25,iou0.45,saveTrue,show_labelsTrue)【YOLOv8交通信号灯检测系统】Python源码PyQt5界面数据集训练代码正文基于YOLOV8开发车载摄像头交通信号灯智能识别完整项目搭载PyQt5可视化操作界面✅系统功能支持单张图片识别、文件夹批量检测、视频文件解析、本地车载摄像头实时检测置信度、IOU阈值自由调节支持GPU/CPU切换运行识别结果自动列表记录支持数据导出。✅适用场景自动驾驶车载视觉感知、路口交通信号灯识别、智能车算法研发、计算机视觉毕业设计、交通监控项目二次开发。✅全套资源完整标注交通信号灯YOLO数据集、YOLOv8训练脚本、训练权重、完整版PyQt图形界面源码、部署说明文档。七、标签关键词#YOLOv8 #交通信号灯检测 #车载视觉识别 #自动驾驶感知 #PyQt5视觉系统 #目标检测毕设 #交通图像识别如果你需要我可以把完整带视频流、摄像头实时检测、表格导出Excel功能的完整版代码补齐