a688e17e4edf7804782e5ac84c7ba27d4bae8106
				
			
			
		
	车牌识别系统
基于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接口(占位)
└── LPRNET_part/              # LPRNet识别模块
    ├── lpr_interface.py      # LPRNet接口(已完成)
    └── LPRNet__iteration_74000.pth  # LPRNet模型权重文件
功能特性
1. 实时车牌检测
- 基于YOLO11 Pose模型进行车牌检测
 - 支持蓝牌(类别0)和绿牌(类别1)识别
 - 实时摄像头画面处理
 
2. 四角点定位
- 检测车牌的四个角点:right_bottom, left_bottom, left_top, right_top
 - 只有检测到完整四个角点的车牌才进行后续处理
 - 用黄色线条连接四个角点显示检测结果
 
3. 透视矫正
- 使用四个角点进行透视变换
 - 将倾斜的车牌矫正为标准矩形
 - 输出标准尺寸的车牌图像供识别使用
 
4. 多种识别方案
- 支持OCR、CRNN和LPRNet三种车牌识别方法
 - LPRNet模型准确率高达98%
 - 模块化接口设计,便于切换不同识别算法
 
5. PyQt界面
- 左侧:实时摄像头画面显示
 - 右侧:检测结果展示区域
- 顶部显示识别到的车牌数量
 - 每行显示:车牌类型、矫正后图像、车牌号
 
 - 美观的现代化界面设计
 
6. 模块化设计
- yolopart:负责车牌定位和矫正
 - OCR_part/CRNN_part/LPRNET_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. 选择识别模块
在 main.py 中修改导入语句来选择不同的识别方案:
# 使用LPRNet(推荐,准确率98%)
from LPRNET_part.lpr_interface import LPRNmodel_predict, LPRNinitialize_model
# 使用OCR
from OCR_part.ocr_interface import LPRNmodel_predict, LPRNinitialize_model
# 使用CRNN
from CRNN_part.crnn_interface import LPRNmodel_predict, LPRNinitialize_model
6. 使用说明
- 点击"启动摄像头"按钮开始检测
 - 将车牌对准摄像头
 - 系统会自动检测车牌并显示:
- 检测框和角点连线
 - 右侧显示车牌类型、矫正图像和车牌号
 
 - 点击"停止摄像头"结束检测
 
模型输出格式
YOLO Pose模型输出包含:
- 检测框:车牌的边界框坐标
 - 类别:0=蓝牌,1=绿牌
 - 置信度:检测置信度分数
 - 关键点:四个角点坐标
- right_bottom:右下角
 - left_bottom:左下角
 - left_top:左上角
 - right_top:右上角
 
 
接口说明
车牌识别接口
项目为OCR、CRNN和LPRNet识别模块提供了标准接口:
# 接口函数名(导入所需模块,每个模块统一函数名)
# 初始化
from 对应模块 import LPRNinitialize_model
LPRNinitialize_model()
# 预测主函数
from 对应模块 import LPRNmodel_predict
result = LPRNmodel_predict(corrected_image)  # 返回7个字符的列表
输入参数
corrected_image:numpy数组格式的矫正后车牌图像
返回值
- 长度为7的字符列表,包含车牌号的每个字符
 - 例如:
['京', 'A', '1', '2', '3', '4', '5'] 
LPRNet模块特性
- 高准确率: 模型准确率高达98%
 - 快速推理: 基于深度学习的端到端识别
 - CTC解码: 使用CTC(Connectionist Temporal Classification)解码算法
 - 支持中文: 完整支持中文省份简称和字母数字组合
 - 模型权重: 使用预训练的LPRNet__iteration_74000.pth权重文件
 
开发说明
添加新的识别算法
- 在对应目录(OCR_part或CRNN_part)实现识别函数
 - 确保函数签名与接口一致
 - 在main.py中导入对应模块即可
 
自定义模型
- 替换 
yolopart/yolo11s-pose42.pt文件 - 确保新模型输出格式与现有接口兼容
 - 根据需要调整类别名称和数量
 
调试模式
在代码中设置调试标志可以输出更多信息:
# 在detector.py中设置verbose=True
results = self.model(image, conf=conf_threshold, verbose=True)
扩展功能
系统设计支持以下扩展:
- 多摄像头支持
 - 批量图像处理
 - 检测结果保存
 - 网络API接口
 - 数据库集成
 - 性能统计和分析
 
Description
				
					Languages
				
				
								
								
									Python
								
								100%