2025-08-28 12:00:56 +08:00

177 lines
4.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 车牌检测系统
基于YOLO11s模型的实时车牌检测应用支持摄像头和视频文件输入具备GPU加速和车牌识别接口。
## 功能特性
-**实时车牌检测**: 基于YOLO11s ONNX模型
-**GPU加速**: 支持CUDA GPU推理加速
-**多视频源**: 支持摄像头和视频文件切换
-**实时显示**: 显示检测框、置信度和实时FPS
-**图像切割**: 自动切割检测到的车牌区域
-**识别接口**: 预留车牌号识别接口可接入OCR模型
-**友好界面**: 基于PyQt5的现代化用户界面
## 系统要求
- Python 3.7+
- Windows/Linux/macOS
- 摄像头(可选)
- NVIDIA GPU可选用于加速
## 安装依赖
```bash
# 安装基础依赖
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. 运行应用
```bash
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计算窗口大小
- 视频文件路径
## 扩展开发
### 添加新的车牌识别器
1. 继承`PlateRecognizerInterface`基类
2. 实现`recognize``batch_recognize`方法
3.`PlateRecognizerManager`中注册新识别器
### 添加新功能
- 检测结果保存
- 车牌数据库管理
- 网络接口API
- 多摄像头支持
## 故障排除
### 常见问题
1. **模型加载失败**
- 检查`last.onnx`文件是否存在
- 确认onnxruntime版本兼容性
2. **摄像头无法打开**
- 检查摄像头是否被其他程序占用
- 尝试不同的摄像头索引
3. **GPU加速不生效**
- 确认安装了`onnxruntime-gpu`
- 检查CUDA环境配置
4. **车牌识别失败**
- 检查OCR依赖是否正确安装
- 尝试切换不同的识别器
### 性能优化
- 使用GPU加速推理
- 调整检测阈值减少误检
- 优化图像预处理流程
- 使用多线程处理
## 许可证
本项目仅供学习和研究使用。
## 更新日志
### v1.0.0
- 初始版本发布
- 支持YOLO11s车牌检测
- 实现基础UI界面
- 预留车牌识别接口