4.5 KiB
4.5 KiB
车牌识别系统
基于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. 安装依赖
pip install -r requirements.txt
3. 模型文件
确保 yolopart/yolo11s-pose42.pt
模型文件存在。这是一个YOLO11 Pose模型,专门训练用于车牌的四角点检测。
4. 运行程序
python main.py
5. 使用说明
- 点击"启动摄像头"按钮开始检测
- 将车牌对准摄像头
- 系统会自动检测车牌并显示:
- 检测框和角点连线
- 右侧显示车牌类型、矫正图像和车牌号
- 点击"停止摄像头"结束检测
模型输出格式
YOLO Pose模型输出包含:
- 检测框:车牌的边界框坐标
- 类别:0=蓝牌,1=绿牌
- 置信度:检测置信度分数
- 关键点:四个角点坐标
- right_bottom:右下角
- left_bottom:左下角
- left_top:左上角
- right_top:右上角
接口说明
OCR/CRNN接口
车牌号识别部分使用统一接口:
# 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']
开发说明
添加新的识别算法
- 在对应目录(OCR_part或CRNN_part)实现识别函数
- 确保函数签名与接口一致
- 在main.py中切换调用的函数即可
自定义模型
- 替换
yolopart/yolo11s-pose42.pt
文件 - 确保新模型输出格式与现有接口兼容
- 根据需要调整类别名称和数量
注意事项
- 模型文件:确保YOLO模型文件路径正确
- 摄像头权限:程序需要摄像头访问权限
- 光照条件:良好的光照有助于提高检测精度
- 车牌角度:尽量保持车牌完整出现在画面中
- 性能优化:可根据硬件配置调整检测参数
故障排除
常见问题
- 摄像头无法启动:检查摄像头是否被其他程序占用
- 模型加载失败:确认模型文件路径和格式正确
- 检测效果差:调整光照条件或摄像头角度
- 界面显示异常:检查PyQt5安装是否完整
调试模式
在代码中设置调试标志可以输出更多信息:
# 在detector.py中设置verbose=True
results = self.model(image, conf=conf_threshold, verbose=True)
扩展功能
系统设计支持以下扩展:
- 多摄像头支持
- 批量图像处理
- 检测结果保存
- 网络API接口
- 数据库集成
- 性能统计和分析