yolorestart
This commit is contained in:
155
README.md
Normal file
155
README.md
Normal file
@@ -0,0 +1,155 @@
|
||||
# 车牌识别系统
|
||||
|
||||
基于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接口
|
||||
- 数据库集成
|
||||
- 性能统计和分析
|
||||
Reference in New Issue
Block a user