2025-08-28 12:00:56 +08:00

4.3 KiB
Raw Blame History

车牌检测系统

基于YOLO11s模型的实时车牌检测应用支持摄像头和视频文件输入具备GPU加速和车牌识别接口。

功能特性

  • 实时车牌检测: 基于YOLO11s ONNX模型
  • GPU加速: 支持CUDA GPU推理加速
  • 多视频源: 支持摄像头和视频文件切换
  • 实时显示: 显示检测框、置信度和实时FPS
  • 图像切割: 自动切割检测到的车牌区域
  • 识别接口: 预留车牌号识别接口可接入OCR模型
  • 友好界面: 基于PyQt5的现代化用户界面

系统要求

  • Python 3.7+
  • Windows/Linux/macOS
  • 摄像头(可选)
  • NVIDIA GPU可选用于加速

安装依赖

# 安装基础依赖
pip install -r requirements.txt

# 如果需要CPU版本的onnxruntime
pip uninstall onnxruntime-gpu
pip install onnxruntime

# 可选:安装车牌识别依赖
# PaddleOCR
pip install paddlepaddle paddleocr

# 或者 Tesseract
pip install pytesseract

使用方法

1. 准备模型文件

确保项目根目录下有以下文件:

  • last.onnx: YOLO11s车牌检测模型
  • video.mp4: 测试视频文件(可选)

2. 运行应用

python main.py

3. 界面操作

  • 开始检测: 点击"开始检测"按钮启动实时检测
  • 切换视频源: 勾选/取消"使用摄像头"切换视频源
  • 启用检测: 勾选/取消"启用检测"开关检测功能
  • 查看结果: 右侧面板显示检测信息和车牌识别结果

项目结构

yolopart/
├── main.py                 # 主程序入口
├── requirements.txt        # 依赖包列表
├── README.md              # 项目说明
├── last.onnx              # YOLO11s模型文件
├── video.mp4              # 测试视频文件
├── ui/                    # 用户界面模块
│   ├── __init__.py
│   ├── main_window.py     # 主窗口
│   └── video_widget.py    # 视频显示组件
├── models/                # 模型模块
│   ├── __init__.py
│   ├── yolo_detector.py   # YOLO检测器
│   └── plate_recognizer.py # 车牌识别接口
└── utils/                 # 工具模块
    ├── __init__.py
    └── video_capture.py   # 视频捕获管理

核心功能说明

YOLO检测器 (models/yolo_detector.py)

  • 支持ONNX格式的YOLO11s模型
  • 自动GPU/CPU推理选择
  • 640x640输入尺寸
  • NMS后处理
  • 检测框绘制和车牌切割

视频捕获 (utils/video_capture.py)

  • 摄像头自动检测和配置
  • 视频文件循环播放
  • 实时FPS计算和显示
  • 线程安全的帧获取

车牌识别接口 (models/plate_recognizer.py)

提供了多种识别器实现:

  • MockPlateRecognizer: 模拟识别器(用于测试)
  • PaddleOCRRecognizer: PaddleOCR识别器
  • TesseractRecognizer: Tesseract识别器

可通过PlateRecognizerManager轻松切换不同的识别引擎。

配置说明

检测参数调整

models/yolo_detector.py中可以调整:

  • conf_threshold: 置信度阈值默认0.5
  • nms_threshold: NMS阈值默认0.4
  • input_size: 输入尺寸默认640x640

视频参数调整

utils/video_capture.py中可以调整:

  • 摄像头分辨率和帧率
  • FPS计算窗口大小
  • 视频文件路径

扩展开发

添加新的车牌识别器

  1. 继承PlateRecognizerInterface基类
  2. 实现recognizebatch_recognize方法
  3. PlateRecognizerManager中注册新识别器

添加新功能

  • 检测结果保存
  • 车牌数据库管理
  • 网络接口API
  • 多摄像头支持

故障排除

常见问题

  1. 模型加载失败

    • 检查last.onnx文件是否存在
    • 确认onnxruntime版本兼容性
  2. 摄像头无法打开

    • 检查摄像头是否被其他程序占用
    • 尝试不同的摄像头索引
  3. GPU加速不生效

    • 确认安装了onnxruntime-gpu
    • 检查CUDA环境配置
  4. 车牌识别失败

    • 检查OCR依赖是否正确安装
    • 尝试切换不同的识别器

性能优化

  • 使用GPU加速推理
  • 调整检测阈值减少误检
  • 优化图像预处理流程
  • 使用多线程处理

许可证

本项目仅供学习和研究使用。

更新日志

v1.0.0

  • 初始版本发布
  • 支持YOLO11s车牌检测
  • 实现基础UI界面
  • 预留车牌识别接口