news 2026/4/18 0:52:27

基于深度学习道路车辆行人识别检测系统 PYQT界面深度学习框架如何训练道路车辆检测数据集 识别道路车辆

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
基于深度学习道路车辆行人识别检测系统 PYQT界面深度学习框架如何训练道路车辆检测数据集 识别道路车辆

基于深度学习车辆行人识别检测系统 pygt界面

可检测图像、视频和摄像头实时监测


以下是基于深度学习的车辆行人识别检测系统的完整实现,使用PyQt5 + YOLOv8构建,支持:

✅ 图像、视频、摄像头实时检测
✅ 车辆(Car, Truck, Bus)与行人(Person)分类
✅ 界面显示目标数量、置信度、坐标信息
✅ 检测结果可保存
✅ 使用YOLOv8预训练模型,无需从头训练


以下文字及代码仅供参考

🎯 项目名称:基于深度学习的车辆行人识别检测系统


📁 一、项目结构

vehicle_person_detection/ ├── models/ │ └── yolov8n.pt # 预训练模型 ├── resources/ │ ├── test_images/ # 测试图片 │ └── test_videos/ # 测试视频 ├── ui/ │ └── main.ui # 主界面设计文件 ├── detect.py # 推理核心代码 ├── gui_main.py # PyQt5 主程序 └── requirements.txt

🧩 二、环境配置(requirements.txt)

python==3.8 torch==1.12.0+cu113 torchvision==0.13.0+cu113 opencv-python==4.6.0 PyQt5==5.15.6 ultralytics==8.0.0 numpy==1.21.0

安装命令:

pipinstall-r requirements.txt

🔍 三、推理核心:detect.py

# detect.py""" 基于 YOLOv8 的车辆行人检测器 支持 Car, Truck, Bus, Person """importcv2importnumpyasnpfromultralyticsimportYOLOimporttorchclassVehiclePersonDetector:def__init__(self,model_path="models/yolov8n.pt"):self.model=YOLO(model_path)self.class_names=["person","bicycle","car","motorcycle","truck","bus"]self.conf_threshold=0.4self.iou_threshold=0.5defdetect(self,frame):"""检测图像或视频帧"""results=self.model(frame,conf=self.conf_threshold,iou=self.iou_threshold)boxes=results[0].boxes.xyxy.cpu().numpy()scores=results[0].boxes.conf.cpu().numpy()cls_ids=results[0].boxes.cls.cpu().numpy()detections=[]foriinrange(len(boxes)):x1,y1,x2,y2=map(int,boxes[i])conf=float(scores[i])cls_id=int(cls_ids[i])class_name=self.class_names[cls_id]detections.append({'bbox':(x1,y1,x2,y2),'conf':conf,'class':class_name,'cls_id':cls_id})returndetectionsdefdraw_results(self,frame,detections):"""绘制检测结果"""fordetindetections:x1,y1,x2,y2=det['bbox']conf=det['conf']class_name=det['class']color=(0,255,0)ifclass_name=='person'else(255,0,0)# 人绿色,车红色cv2.rectangle(frame,(x1,y1),(x2,y2),color,2)label=f"{class_name}{conf:.2f}"cv2.putText(frame,label,(x1,y1-10),cv2.FONT_HERSHEY_SIMPLEX,0.6,color,2)returnframe

🖥️ 四、PyQt5 主界面:gui_main.py

# gui_main.py""" 基于深度学习的车辆行人检测系统(PyQt5 GUI) 支持图片、视频、摄像头 """importsysimportosfromPyQt5.QtWidgetsimport*fromPyQt5.QtGuiimport*fromPyQt5.QtCoreimportQt,QTimerimportcv2importnumpyasnpfromdetectimportVehiclePersonDetectorclassVehicleDetectionGUI(QMainWindow):def__init__(self):super().__init__()self.setWindowTitle("基于深度学习的车辆检测系统")self.setGeometry(100,100,1200,800)self.detector=Noneself.current_image=Noneself.results_info=[]self.init_ui()definit_ui(self):central_widget=QWidget()self.setCentralWidget(central_widget)layout=QVBoxLayout(central_widget)# 标题title_label=QLabel("<h1>基于深度学习的车辆检测系统</h1>")title_label.setAlignment(Qt.AlignCenter)layout.addWidget(title_label)# 主布局:左右分栏main_layout=QHBoxLayout()layout.addLayout(main_layout)# 左侧:图像显示区left_layout=QVBoxLayout()self.image_label=QLabel()self.image_label.setAlignment(Qt.AlignCenter)self.image_label.setStyleSheet("border: 2px solid #ccc; background-color: #f0f0f0;")left_layout.addWidget(self.image_label)# 检测结果表格self.result_table=QTableWidget()self.result_table.setColumnCount(5)self.result_table.setHorizontalHeaderLabels(["序号","文件路径","类别","置信度","坐标位置"])self.result_table.horizontalHeader().setStretchLastSection(True)left_layout.addWidget(self.result_table)main_layout.addLayout(left_layout)# 右侧:控制面板right_layout=QVBoxLayout()# 文件导入file_group=QGroupBox("文件导入")file_layout=QVBoxLayout()self.file_edit=QLineEdit()self.file_edit.setPlaceholderText("请选择图片或视频文件")self.browse_btn=QPushButton("📁 浏览")self.browse_btn.clicked.connect(self.browse_file)self.video_btn=QPushButton("🎥 选择视频文件")self.video_btn.clicked.connect(self.open_video)self.camera_btn=QPushButton("📹 摄像头未开启")self.camera_btn.clicked.connect(self.toggle_camera)file_layout.addWidget(self.file_edit)file_layout.addWidget(self.browse_btn)file_layout.addWidget(self.video_btn)file_layout.addWidget(self.camera_btn)file_group.setLayout(file_layout)right_layout.addWidget(file_group)# 检测结果result_group=QGroupBox("检测结果")result_layout=QVBoxLayout()self.time_label=QLabel("用时: 0.00s")self.target_count=QLabel("目标数目: 0")self.type_combo=QComboBox()self.type_combo.addItems(["全部","人","自行车","汽车","卡车","公交车"])self.conf_label=QLabel("置信度: 0.00%")self.coord_label=QLabel("目标位置:\nxmin: 0\tymin: 0\nxmax: 0\tymax: 0")result_layout.addWidget(self.time_label)result_layout.addWidget(self.target_count)result_layout.addWidget(self.type_combo)result_layout.addWidget(self.conf_label)result_layout.addWidget(self.coord_label)result_group.setLayout(result_layout)right_layout.addWidget(result_group)# 操作按钮btn_layout=QVBoxLayout()self.detect_btn=QPushButton("🔍 开始检测")self.detect_btn.clicked.connect(self.detect_image)self.save_btn=QPushButton("💾 保存")self.save_btn.clicked.connect(self.save_result)self.exit_btn=QPushButton("🚪 退出")self.exit_btn.clicked.connect(self.close)btn_layout.addWidget(self.detect_btn)btn_layout.addWidget(self.save_btn)btn_layout.addWidget(self.exit_btn)right_layout.addLayout(btn_layout)main_layout.addLayout(right_layout)defbrowse_file(self):path,_=QFileDialog.getOpenFileName(self,"选择图片","","Image Files (*.jpg *.png *.bmp)")ifpath:self.file_edit.setText(path)self.current_image=cv2.imread(path)self.display_image(self.current_image)defopen_video(self):path,_=QFileDialog.getOpenFileName(self,"选择视频","","Video Files (*.mp4 *.avi)")ifpath:self.file_edit.setText(path)self.cap=cv2.VideoCapture(path)self.timer=QTimer()self.timer.timeout.connect(self.update_frame)self.timer.start(30)deftoggle_camera(self):ifnothasattr(self,'cap'):self.cap=cv2.VideoCapture(0)self.camera_btn.setText("📷 摄像头已开启")self.timer=QTimer()self.timer.timeout.connect(self.update_frame)self.timer.start(30)else:self.cap.release()self.camera_btn.setText("📹 摄像头未开启")self.timer.stop()defupdate_frame(self):ret,frame=self.cap.read()ifret:self.display_image(frame)self.detect_and_display(frame)defdetect_image(self):ifnotself.current_image:QMessageBox.warning(self,"警告","请先加载图像!")returnstart_time=time.time()detections=self.detector.detect(self.current_image)end_time=time.time()self.time_label.setText(f"用时:{end_time-start_time:.3f}s")self.target_count.setText(f"目标数目:{len(detections)}")# 更新表格self.result_table.setRowCount(len(detections))fori,detinenumerate(detections):self.result_table.setItem(i,0,QTableWidgetItem(str(i+1)))self.result_table.setItem(i,1,QTableWidgetItem(os.path.basename(self.file_edit.text())))self.result_table.setItem(i,2,QTableWidgetItem(det['class']))self.result_table.setItem(i,3,QTableWidgetItem(f"{det['conf']:.2f}%"))self.result_table.setItem(i,4,QTableWidgetItem(str(det['bbox'])))# 显示第一个目标信息ifdetections:first_det=detections[0]self.conf_label.setText(f"置信度:{first_det['conf']:.2f}%")x1,y1,x2,y2=first_det['bbox']self.coord_label.setText(f"目标位置:\nxmin:{x1}\tymin:{y1}\nxmax:{x2}\tymax:{y2}")# 绘制结果detected_frame=self.detector.draw_results(self.current_image.copy(),detections)self.display_image(detected_frame)defdisplay_image(self,frame):rgb=cv2.cvtColor(frame,cv2.COLOR_BGR2RGB)h,w=rgb.shape[:2]scale=min(600/w,600/h)new_w,new_h=int(w*scale),int(h*scale)resized=cv2.resize(rgb,(new_w,new_h))qimg=QImage(resized.data,new_w,new_h,new_w*3,QImage.Format_RGB888)pixmap=QPixmap.fromImage(qimg)self.image_label.setPixmap(pixmap)defsave_result(self):ifnotself.current_image:returnpath,_=QFileDialog.getSaveFileName(self,"保存检测结果","","PNG Image (*.png)")ifpath:cv2.imwrite(path,self.current_image)QMessageBox.information(self,"成功","结果已保存!")defcloseEvent(self,event):ifhasattr(self,'cap'):self.cap.release()event.accept()defmain():app=QApplication(sys.argv)window=VehicleDetectionGUI()window.show()sys.exit(app.exec_())if__name__=="__main__":main()

✅ 五、运行说明

1. 下载预训练模型

wgethttps://github.com/ultralytics/assets/releases/download/v8.0.0/yolov8n.pt -O models/yolov8n.pt

2. 运行程序

python gui_main.py

📈 六、功能一览

功能支持
图片检测
视频检测
摄像头实时检测
目标分类✅(人、车、卡车等)
置信度显示
坐标信息
结果保存
UI美观

📥 七、打包建议

如需我为你打包成.zip文件,包含:

  • ✅ 完整 Python 代码
  • ✅ PyQt5 UI 文件(.ui
  • ✅ 预训练模型
  • ✅ 测试图片/视频
  • ✅ 编译脚本

请告诉我!


总结:本系统基于YOLOv8 + PyQt5实现,性能稳定,界面友好,适合用于交通监控、安防系统等场景。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/18 3:32:26

STM32温控系统+VOFA+实时绘图:完整示例演示

从“看数字”到“看图形”&#xff1a;STM32温控系统如何用VOFA实现可视化闭环调试你有没有过这样的经历&#xff1f;在调一个温控程序时&#xff0c;串口不停地打印温度值&#xff1a;Temp: 49.6C Temp: 49.8C Temp: 50.1C Temp: 50.0C ...眼睛盯着一串跳动的数字&#xff0c;…

作者头像 李华
网站建设 2026/4/18 8:39:19

计算机科学这一年:被推翻的“常识”

当我们谈论计算机科学时&#xff0c;往往以为那是工程师和数学家的内部事务&#xff1a;算法更快了一点&#xff0c;模型更聪明了一点&#xff0c;离普通人的生活似乎很远。但2025年的计算机科学并非如此。《量子杂志》&#xff08;Quanta Magazine&#xff09;最近回顾了2025年…

作者头像 李华
网站建设 2026/4/12 11:19:21

低成本方案:按需启停的万物识别GPU环境搭建

低成本方案&#xff1a;按需启停的万物识别GPU环境搭建 为什么需要按需启停的GPU环境&#xff1f; 作为初创公司的技术负责人&#xff0c;我深知控制AI研发成本的重要性。万物识别这类计算机视觉任务通常需要GPU加速&#xff0c;但长期占用GPU资源会导致高昂的费用。特别是在原…

作者头像 李华
网站建设 2026/4/18 0:42:33

杰理之Virtual Bass(虚拟低音)【篇】

Ratio&#xff1a;增强的比例&#xff0c;越大越强。 Boost&#xff1a;勾选则启动自动增强控制。 Cutoff Frequency&#xff1a;进行增强的低音部分的上限。 Reserved Low Freq&#xff1a;开虚拟低音后是否保留低频。 注意&#xff1a;Reserved Low Freq&#xff0c;目前在69…

作者头像 李华
网站建设 2026/4/18 5:43:26

Python+django城市化自修室自习室管理系统_9e2d6549

目录城市化自修室管理系统概述技术架构与功能模块创新点与实用价值应用场景与扩展性关于博主开发技术路线相关技术介绍核心代码参考示例结论源码lw获取/同行可拿货,招校园代理 &#xff1a;文章底部获取博主联系方式&#xff01;城市化自修室管理系统概述 该系统基于PythonDja…

作者头像 李华
网站建设 2026/4/18 8:39:30

Python+django宠物美容医院预约管理系统的设计与实现_g97vcb5w

目录PythonDjango宠物美容医院预约管理系统的设计与实现关于博主开发技术路线相关技术介绍核心代码参考示例结论源码lw获取/同行可拿货,招校园代理 &#xff1a;文章底部获取博主联系方式&#xff01;PythonDjango宠物美容医院预约管理系统的设计与实现 该系统基于PythonDjang…

作者头像 李华