一. 立项背景和目标
本项目为深度学习的期末作业,目标是构建一套基于计算机视觉技术的智能停车场收费系统。通过利用深度学习算法实现车牌的自动识别,结合智能计费逻辑,实现停车场无人值守化管理。系统能够自动记录车辆入场和出场时间,实时识别车牌号码,并根据预设费率自动计算停车费用。这不仅能够大幅降低人工成本,提高收费准确性,还能为停车场管理者提供详细的数据统计和历史记录查询功能,有效提升停车场运营效率和服务质量。
二. 软件功能和核心功能模块
1. 车牌识别模块
- 集成YOLO深度学习模型进行车牌区域检测
- 使用PaddleOCR进行车牌文字识别
- 支持多种车牌类型(蓝牌、黄牌、新能源牌、军牌、武警牌)
- 车牌规范化处理,去除识别干扰字符
2. 智能计费系统
- 支持自定义费率设置(元/小时)
- 提供免费停车时长配置
- 多种计费取整方式:向上取整、向下取整、精确计算
- 支持最低消费设置
3. 车辆管理系统
- 自动记录车辆入场时间
- 自动计算停车时长和费用
- 维护在场车辆列表
- 生成完整停车记录
4. 视频监控模块
- 支持多路摄像头接入(USB摄像头、网络摄像头)
- 支持视频文件和图片测试
- 实时视频流显示
- 可配置识别区域(ROI)
5. 配置管理系统
- 系统参数可视化配置
- 配置保存和加载
- 默认配置恢复
三. 业务流程和功能路径
基本业务流程:
车辆入场流程:
摄像头捕获视频 → YOLO检测车牌区域 → PaddleOCR识别车牌 → 验证车牌有效性 → 记录入场信息 → 显示入场结果
车辆出场流程:
摄像头捕获视频 → YOLO检测车牌区域 → PaddleOCR识别车牌 → 验证车牌有效性 → 查询入场记录 → 计算停车时长和费用 → 记录出场信息 → 显示收费信息
系统使用路径:
1. 启动系统 → 进入主界面
2. 配置设置 → 设置YOLO模型路径、费率和参数
3. 启动监控 → 选择视频源 → 开始实时监控
4. 车牌识别 → 自动检测车牌 → 显示识别结果
5. 车辆入场/出场 → 手动或自动模式操作
6. 查看记录 → 历史记录管理 → 导出或查询
一. 整体架构和设计思路
架构设计:
采用典型的MVC分层架构,主要分为三个层次:
UI层 (PySide6)
main_window.py / dialogs.py /ui_components.py
业务逻辑层
arking_system.py (计费逻辑)
video_thread.py (视频处理)
工具层
utils.py (工具函数)
模块技术栈:
| 模块 | 技术栈 | 说明 |
|------|--------|------|
| UI界面 | PySide6 + Qt Framework | 跨平台GUI开发框架 |
| 车牌检测 | Ultralytics YOLO | 深度学习目标检测 |
| 文字识别 | PaddleOCR | 基于深度学习的OCR |
| 图像处理 | OpenCV | 视频帧处理和图像操作 |
| 数据存储 | JSON | 配置文件和记录存储 |
二. 负责模块和结果
我负责的模块:
1. 车牌识别核心模块
- 负责将YOLO检测结果与OCR识别结果整合
- 实现车牌规范化处理逻辑
- 编写车牌验证正则表达式(支持民用车牌、军牌、武警牌、新能源车牌)
- 实现识别冷却机制,防止重复识别
2. 计费系统模块
- 设计并实现停车场核心业务逻辑
- 实现多种计费算法(按时计费、免费时段、取整方式)
- 维护车辆进出记录
- 实现费用计算引擎
3. UI组件开发
- 参与主窗口界面设计
- 开发配置对话框组件
- 实现历史记录管理界面
实现结果(量化指标):
- 车牌识别准确率达到预期水平,正确识别常见民用车牌格式
- 计费系统支持4种取整方式和灵活费率配置
- 系统响应流畅,视频帧处理稳定
- 支持历史记录导出和管理功能
三. 难点、坑和解决方案
难点一:车牌识别准确性
问题描述:车牌识别过程中,经常出现识别结果包含干扰字符(如点号)、识别错误或识别失败等情况,严重影响用户体验和系统可靠性。
解决方案:
- 实现车牌规范化函数,去除点号等干扰字符
- 编写全面的车牌正则表达式验证,支持多种车牌格式
- 设置识别置信度阈值,过滤低质量识别结果
- 添加识别冷却机制,避免同一车牌短时间内重复识别
难点二:视频流处理性能
问题: 实时视频流处理对系统性能要求较高,直接在主线程处理视频会导致UI卡顿,影响用户体验。
解决:
- 采用QThread多线程处理视频流,将视频处理与UI渲染分离
- 使用信号槽机制进行线程间通信,确保线程安全
- 设置帧间隔处理,降低计算负担
- 实现识别区域(ROI)设置,减少不必要的图像处理区域