2025-08-30 11:53:20 +08:00

155 lines
4.5 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.

# 车牌识别系统
基于YOLO11 Pose模型的实时车牌检测与识别系统支持蓝牌和绿牌的检测、四角点定位、透视矫正和车牌号识别。
## 项目结构
```
License_plate_recognition/
├── main.py # 主程序入口PyQt界面
├── requirements.txt # 依赖包列表
├── README.md # 项目说明文档
├── yolopart/ # YOLO检测模块
│ ├── detector.py # YOLO检测器类
│ └── yolo11s-pose42.pt # YOLO pose模型文件
├── OCR_part/ # OCR识别模块
│ └── ocr_interface.py # OCR接口占位
└── CRNN_part/ # CRNN识别模块
└── crnn_interface.py # CRNN接口占位
```
## 功能特性
### 1. 实时车牌检测
- 基于YOLO11 Pose模型进行车牌检测
- 支持蓝牌类别0和绿牌类别1识别
- 实时摄像头画面处理
### 2. 四角点定位
- 检测车牌的四个角点right_bottom, left_bottom, left_top, right_top
- 只有检测到完整四个角点的车牌才进行后续处理
- 用黄色线条连接四个角点显示检测结果
### 3. 透视矫正
- 使用四个角点进行透视变换
- 将倾斜的车牌矫正为标准矩形
- 输出标准尺寸的车牌图像供识别使用
### 4. PyQt界面
- 左侧:实时摄像头画面显示
- 右侧:检测结果展示区域
- 顶部显示识别到的车牌数量
- 每行显示:车牌类型、矫正后图像、车牌号
- 美观的现代化界面设计
### 5. 模块化设计
- yolopart负责车牌定位和矫正
- OCR_part/CRNN_part负责车牌号识别接口已预留
- 各模块独立,便于维护和扩展
## 安装和使用
### 1. 环境要求
- Python 3.7+
- Windows/Linux/macOS
- 摄像头设备
### 2. 安装依赖
```bash
pip install -r requirements.txt
```
### 3. 模型文件
确保 `yolopart/yolo11s-pose42.pt` 模型文件存在。这是一个YOLO11 Pose模型专门训练用于车牌的四角点检测。
### 4. 运行程序
```bash
python main.py
```
### 5. 使用说明
1. 点击"启动摄像头"按钮开始检测
2. 将车牌对准摄像头
3. 系统会自动检测车牌并显示:
- 检测框和角点连线
- 右侧显示车牌类型、矫正图像和车牌号
4. 点击"停止摄像头"结束检测
## 模型输出格式
YOLO Pose模型输出包含
- **检测框**:车牌的边界框坐标
- **类别**0=蓝牌1=绿牌
- **置信度**:检测置信度分数
- **关键点**:四个角点坐标
- right_bottom右下角
- left_bottom左下角
- left_top左上角
- right_top右上角
## 接口说明
### OCR/CRNN接口
车牌号识别部分使用统一接口:
```python
# OCR接口
from OCR_part.ocr_interface import ocr_predict
result = ocr_predict(corrected_image) # 返回7个字符的列表
# CRNN接口
from CRNN_part.crnn_interface import crnn_predict
result = crnn_predict(corrected_image) # 返回7个字符的列表
```
### 输入参数
- `corrected_image`numpy数组格式的矫正后车牌图像
### 返回值
- 长度为7的字符列表包含车牌号的每个字符
- 例如:`['京', 'A', '1', '2', '3', '4', '5']`
## 开发说明
### 添加新的识别算法
1. 在对应目录OCR_part或CRNN_part实现识别函数
2. 确保函数签名与接口一致
3. 在main.py中切换调用的函数即可
### 自定义模型
1. 替换 `yolopart/yolo11s-pose42.pt` 文件
2. 确保新模型输出格式与现有接口兼容
3. 根据需要调整类别名称和数量
## 注意事项
1. **模型文件**确保YOLO模型文件路径正确
2. **摄像头权限**:程序需要摄像头访问权限
3. **光照条件**:良好的光照有助于提高检测精度
4. **车牌角度**:尽量保持车牌完整出现在画面中
5. **性能优化**:可根据硬件配置调整检测参数
## 故障排除
### 常见问题
1. **摄像头无法启动**:检查摄像头是否被其他程序占用
2. **模型加载失败**:确认模型文件路径和格式正确
3. **检测效果差**:调整光照条件或摄像头角度
4. **界面显示异常**检查PyQt5安装是否完整
### 调试模式
在代码中设置调试标志可以输出更多信息:
```python
# 在detector.py中设置verbose=True
results = self.model(image, conf=conf_threshold, verbose=True)
```
## 扩展功能
系统设计支持以下扩展:
- 多摄像头支持
- 批量图像处理
- 检测结果保存
- 网络API接口
- 数据库集成
- 性能统计和分析