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/17 9:26:00

Keil找不到头文件?一文说清包含目录的正确添加方法

Keil找不到头文件&#xff1f;别再瞎折腾了&#xff0c;这才是真正的解决之道你有没有遇到过这样的场景&#xff1a;明明stm32f4xx_hal.h就躺在工程目录里&#xff0c;结果一编译就弹出红字警告——“fatal error: stm32f4xx_hal.h: No such file or directory”&#xff1f;更…

作者头像 李华
网站建设 2026/4/14 3:05:22

万物识别API开发全攻略:从搭建到上线只需半天

万物识别API开发全攻略&#xff1a;从搭建到上线只需半天 作为一名全栈开发者&#xff0c;你是否遇到过这样的场景&#xff1a;客户突然要求在APP中增加物体识别功能&#xff0c;而你对AI模型部署流程一窍不通&#xff1f;本文将带你快速搭建一个完整的物体识别API服务&#xf…

作者头像 李华
网站建设 2026/4/17 18:45:18

协同过滤算法电影推荐系统|基于Python + Django协同过滤算法电影推荐系统(源码+数据库+文档)

协同过滤算法电影推荐系统 目录 基于PythonDjango美食菜谱数据分析可视化系统 一、前言 二、系统功能演示 三、技术选型 四、其他项目参考 五、代码参考 六、测试参考 七、最新计算机毕设选题推荐 八、源码获取&#xff1a; 基于PythonDjango美食菜谱数据分析可视化系…

作者头像 李华
网站建设 2026/4/14 4:23:10

中小企业也能负担得起:Qwen3Guard-Gen-8B低成本部署方案

中小企业也能负担得起&#xff1a;Qwen3Guard-Gen-8B低成本部署方案 在AI生成内容爆发式增长的今天&#xff0c;一条自动生成的客服回复、一篇由大模型撰写的营销文案&#xff0c;甚至一段虚拟主播的直播脚本&#xff0c;都可能暗藏合规风险。讽刺的是&#xff0c;许多中小企业…

作者头像 李华
网站建设 2026/4/17 13:07:13

万物识别模型调优指南:基于云端GPU的进阶实战

万物识别模型调优指南&#xff1a;基于云端GPU的进阶实战 作为一名AI工程师&#xff0c;当你已经搭建好基础的万物识别系统后&#xff0c;下一步往往需要更大的算力进行模型优化和超参数调整。本文将分享如何利用云端GPU资源&#xff0c;快速完成万物识别模型的进阶调优&#x…

作者头像 李华
网站建设 2026/4/12 12:28:23

杰理之DynEQ(动态EQ)【篇】

fc&#xff1a;动态EQ的中心频率。 Q&#xff1a;动态EQ的质量参数&#xff0c;意义与普通EQ一样。 gain:在中心频率固定的增益。 rmsTime:rms检测时间&#xff0c;当algorithm选择为RMS时生效。 alogrithm&#xff1a;检测模式为PEAK或者RMS。 noise_threshold&#xff1a;噪声…

作者头像 李华