Initial commit

This commit is contained in:
2025-08-28 12:00:56 +08:00
commit edef40acd4
27 changed files with 1823 additions and 0 deletions

177
yolopart/README.md Normal file
View File

@@ -0,0 +1,177 @@
# 车牌检测系统
基于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界面
- 预留车牌识别接口