4.3 KiB
4.3 KiB
车牌检测系统
基于YOLO11s模型的实时车牌检测应用,支持摄像头和视频文件输入,具备GPU加速和车牌识别接口。
功能特性
- ✅ 实时车牌检测: 基于YOLO11s ONNX模型
- ✅ GPU加速: 支持CUDA GPU推理加速
- ✅ 多视频源: 支持摄像头和视频文件切换
- ✅ 实时显示: 显示检测框、置信度和实时FPS
- ✅ 图像切割: 自动切割检测到的车牌区域
- ✅ 识别接口: 预留车牌号识别接口,可接入OCR模型
- ✅ 友好界面: 基于PyQt5的现代化用户界面
系统要求
- Python 3.7+
- Windows/Linux/macOS
- 摄像头(可选)
- NVIDIA GPU(可选,用于加速)
安装依赖
# 安装基础依赖
pip install -r requirements.txt
# 如果需要CPU版本的onnxruntime
pip uninstall onnxruntime-gpu
pip install onnxruntime
# 可选:安装车牌识别依赖
# PaddleOCR
pip install paddlepaddle paddleocr
# 或者 Tesseract
pip install pytesseract
使用方法
1. 准备模型文件
确保项目根目录下有以下文件:
last.onnx
: YOLO11s车牌检测模型video.mp4
: 测试视频文件(可选)
2. 运行应用
python main.py
3. 界面操作
- 开始检测: 点击"开始检测"按钮启动实时检测
- 切换视频源: 勾选/取消"使用摄像头"切换视频源
- 启用检测: 勾选/取消"启用检测"开关检测功能
- 查看结果: 右侧面板显示检测信息和车牌识别结果
项目结构
yolopart/
├── main.py # 主程序入口
├── requirements.txt # 依赖包列表
├── README.md # 项目说明
├── last.onnx # YOLO11s模型文件
├── video.mp4 # 测试视频文件
├── ui/ # 用户界面模块
│ ├── __init__.py
│ ├── main_window.py # 主窗口
│ └── video_widget.py # 视频显示组件
├── models/ # 模型模块
│ ├── __init__.py
│ ├── yolo_detector.py # YOLO检测器
│ └── plate_recognizer.py # 车牌识别接口
└── utils/ # 工具模块
├── __init__.py
└── video_capture.py # 视频捕获管理
核心功能说明
YOLO检测器 (models/yolo_detector.py
)
- 支持ONNX格式的YOLO11s模型
- 自动GPU/CPU推理选择
- 640x640输入尺寸
- NMS后处理
- 检测框绘制和车牌切割
视频捕获 (utils/video_capture.py
)
- 摄像头自动检测和配置
- 视频文件循环播放
- 实时FPS计算和显示
- 线程安全的帧获取
车牌识别接口 (models/plate_recognizer.py
)
提供了多种识别器实现:
MockPlateRecognizer
: 模拟识别器(用于测试)PaddleOCRRecognizer
: PaddleOCR识别器TesseractRecognizer
: Tesseract识别器
可通过PlateRecognizerManager
轻松切换不同的识别引擎。
配置说明
检测参数调整
在models/yolo_detector.py
中可以调整:
conf_threshold
: 置信度阈值(默认0.5)nms_threshold
: NMS阈值(默认0.4)input_size
: 输入尺寸(默认640x640)
视频参数调整
在utils/video_capture.py
中可以调整:
- 摄像头分辨率和帧率
- FPS计算窗口大小
- 视频文件路径
扩展开发
添加新的车牌识别器
- 继承
PlateRecognizerInterface
基类 - 实现
recognize
和batch_recognize
方法 - 在
PlateRecognizerManager
中注册新识别器
添加新功能
- 检测结果保存
- 车牌数据库管理
- 网络接口API
- 多摄像头支持
故障排除
常见问题
-
模型加载失败
- 检查
last.onnx
文件是否存在 - 确认onnxruntime版本兼容性
- 检查
-
摄像头无法打开
- 检查摄像头是否被其他程序占用
- 尝试不同的摄像头索引
-
GPU加速不生效
- 确认安装了
onnxruntime-gpu
- 检查CUDA环境配置
- 确认安装了
-
车牌识别失败
- 检查OCR依赖是否正确安装
- 尝试切换不同的识别器
性能优化
- 使用GPU加速推理
- 调整检测阈值减少误检
- 优化图像预处理流程
- 使用多线程处理
许可证
本项目仅供学习和研究使用。
更新日志
v1.0.0
- 初始版本发布
- 支持YOLO11s车牌检测
- 实现基础UI界面
- 预留车牌识别接口