2025-09-04 01:50:49 +08:00
OCR
2025-09-01 00:01:38 +08:00
2025-09-04 00:07:52 +08:00
2025-09-04 00:10:18 +08:00
2025-09-04 00:07:52 +08:00
2025-09-04 01:50:49 +08:00
2025-09-04 00:07:52 +08:00
2025-09-04 00:10:18 +08:00

车牌识别系统

基于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. 使用说明

  1. 点击"启动摄像头"按钮开始检测
  2. 将车牌对准摄像头
  3. 系统会自动检测车牌并显示:
    • 检测框和角点连线
    • 右侧显示车牌类型、矫正图像和车牌号
  4. 点击"停止摄像头"结束检测

模型输出格式

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_imagenumpy数组格式的矫正后车牌图像

返回值

  • 长度为7的字符列表包含车牌号的每个字符
  • 例如:['京', 'A', '1', '2', '3', '4', '5']

LPRNet模块特性

  • 高准确率: 模型准确率高达98%
  • 快速推理: 基于深度学习的端到端识别
  • CTC解码: 使用CTCConnectionist Temporal Classification解码算法
  • 支持中文: 完整支持中文省份简称和字母数字组合
  • 模型权重: 使用预训练的LPRNet__iteration_74000.pth权重文件

开发说明

添加新的识别算法

  1. 在对应目录OCR_part或CRNN_part实现识别函数
  2. 确保函数签名与接口一致
  3. 在main.py中导入对应模块即可

自定义模型

  1. 替换 yolopart/yolo11s-pose42.pt 文件
  2. 确保新模型输出格式与现有接口兼容
  3. 根据需要调整类别名称和数量

调试模式

在代码中设置调试标志可以输出更多信息:

# 在detector.py中设置verbose=True
results = self.model(image, conf=conf_threshold, verbose=True)

扩展功能

系统设计支持以下扩展:

  • 多摄像头支持
  • 批量图像处理
  • 检测结果保存
  • 网络API接口
  • 数据库集成
  • 性能统计和分析
Description
No description provided
Readme 235 MiB
Languages
Python 100%