中文车牌识别系统(YOLO + LPRNet)
一个基于深度学习的中文车牌识别系统,集成 YOLO 目标检测 与 LPRNet 字符识别 技术,支持从单张图片、视频文件或实时摄像头流中自动检测并识别车牌信息,涵盖蓝牌、绿牌(新能源)等中国主流车牌类型。
图片检测效果
视频检测效果
项目特点
1、精准检测:采用 YOLO 系列模型(支持 YOLOv8 / YOLOv11),高效定位复杂场景下的车牌位置
2、高效识别:基于 LPRNet 端到端识别模型,直接输出包含中文、字母、数字的完整车牌号
3、友好界面:使用 PySide6 构建图形用户界面,一键切换图片/视频/摄像头模式
4、多源输入:无缝支持静态图像、视频文件和实时摄像头流
5、多种车牌支持:兼容蓝牌、黄牌、绿牌(新能源八位车牌)等中国常见类型
6、跨平台运行:可在 Windows、Linux 和 macOS 上部署运行
项目结构
YOLO_LPRNet_Pytorch/
├── main.py # GUI 主程序入口
├── demo_integrated_lpr.py # 集成演示脚本
├── train_yolo.py # YOLO 检测模型训练
├── train_LPRNet.py # LPRNet 识别模型训练
├── test_yolo.py / test_LPRNet.py # 模型测试脚本
├── prepare_ccpd_data.py # CCPD 数据集预处理
├── install_dependencies.py # 依赖自动安装脚本
├── requirements.txt # 依赖清单
├── data/
│ ├── NotoSansCJK-Regular.ttc # 中文字体(用于结果绘制)
│ └── lprnet/ # LPRNet 训练数据
├── model/
│ └── LPRNet.py # LPRNet 网络定义
├── images/ # 示例图片与视频
├── weights/ # 预训练模型权重
│ ├── best.pt # YOLO 最佳权重
│ └── Final_LPRNet_model.pth # LPRNet 权重
├── yolo_utils.py # YOLO 工具函数
├── yolo_config.yaml # YOLO 配置文件
└── yolov8n.pt / yolo11n.pt # YOLO 预训练主干模型
快速开始
1、环境配置
确保已安装 Python ≥ 3.8,运行:
python install_dependencies.py
核心依赖包括:
-
torch >= 1.7.1、torchvision -
opencv-python >= 4.5.0 -
ultralytics >= 8.0.0(YOLOv8/v11 支持) -
PySide6 >= 6.4.0(GUI) -
pillow(含中文字体支持)
2、启动应用
python main.py
启动后可通过 GUI 界面选择图片、视频或开启摄像头进行实时识别。
3、功能操作
-
选择图片:上传单张图像进行识别
-
选择视频:加载本地视频文件逐帧分析
-
打开摄像头:调用默认摄像头实时检测
-
暂停/停止:控制视频或摄像头流处理状态
模型训练(可选)
1、训练 YOLO 车牌检测模型
- 使用 CCPD 数据集(推荐
CCPD2020+ccpd_green) - 预处理
python prepare_ccpd_data.py --ccpd_root ./data/CCPD/CCPD2020/ccpd_green --output_dir ./data/yolo
- 训练
python train_yolo.py --model yolov8n.pt --epochs 50 --batch_size 16
2、训练 LPRNet 字符识别模型
- 先用训练好的 YOLO 模型裁剪车牌区域:
python extract_ccpd_plates.py --ccpd_root ./data/CCPD/... --model_path ./weights/best.pt
- 再训练 LPRNet:
python train_LPRNet.py
测试与评估
- 单独测试 YOLO:
python test_yolo.py --model ./weights/best.pt --input ./images/test.jpg --save
- 单独测试 LPRNet:
python test_LPRNet.py
- 端到端集成测试:
python demo_integrated_lpr.py --yolo_model ./weights/best.pt --lpr_model ./weights/Final_LPRNet_model.pth --image ./images/test.jpg
技术原理
1、YOLO 车牌检测
单阶段目标检测,一次前向传播完成定位,速度快、精度高,适应多角度、遮挡、光照变化场景。
2、LPRNet 字符识别
专为车牌设计的轻量 CNN 模型,无需字符分割,通过 CTC 损失直接输出变长车牌字符串,支持中文+字母+数字混合识别。
3、系统流程
输入 → YOLO 检测车牌 → 裁剪区域 → LPRNet 识别 → 叠加结果 → 显示/保存
常见问题与解决方案
-
中文乱码:确保系统有中文字体(如
SimHei或项目内置NotoSansCJK) -
模型加载失败:检查权重路径是否正确,文件是否完整
-
检测漏检/误检:调整
--conf(置信度)和--iou阈值 -
性能不足:改用
yolov8n或yolo11n小模型,降低输入分辨率 -
摄像头打不开:尝试修改设备索引(如
cv2.VideoCapture(0)→(1))
关键词
YOLOv8、LPRNet、中文车牌识别、车牌检测、字符识别、PySide6、CCPD、端到端识别、新能源车牌、本地部署
最后
如果你觉得这篇文章对你有帮助,不妨点个赞支持一下!你的支持是我继续分享知识的动力。如果有任何疑问或需要进一步的帮助,欢迎随时留言。
也可以加入微信公众号 [DotNet技术匠] 社区,与其他热爱技术的同行一起交流心得,共同成长!
优秀是一种习惯,欢迎大家留言学习!