基于C#winform实现yolo26-plate中文车牌检测识别支持12种中文双层颜色车牌文字识别

作品简介

 


基于C#winform实现yolo26-plate中文车牌检测识别支持12种中文双层颜色车牌文字识别效果展示




项目简介

这是一个基于深度学习的车牌检测与识别系统,采用 ONNX 模型格式实现,支持CPU和 CUDA 加速推理。本项目将Python实现的车牌检测识别功能完整移植到 C# 环境,实现了高性能、模块化的车牌识别解决方案。

算法原理

本系统采用两阶段检测识别架构:

1. 车牌检测(YOLOv26s-Plate-Detect)

  • • 使用改进的 YOLOv26s 检测模型,专门针对车牌检测优化
  • • 输入尺寸:640×640 像素
  • • 预处理:LetterBox 缩放(保持宽高比缩放+灰边填充)
  • • 后处理:置信度过滤 + 非极大值抑制(NMS)+ 坐标转换
  • • 输出:车牌边界框坐标、置信度、车牌类型(单层/双层)

2. 车牌识别(Plate-Rec-Color)

  • • 使用 CNN-LSTM 结构的车牌识别模型,支持中文字体识别
  • • 输入尺寸:48×168 像素(高度×宽度)
  • • 预处理:归一化(均值:0.588,标准差:0.193)
  • • 后处理:字符解码 + 正则表达式过滤(确保车牌格式合规)
  • • 输出:车牌号码、车牌颜色、车牌类型

3. 结果可视化

  • • 科技风检测框:主题色边框 + 发光效果 + 四角科技角标
  • • 车牌信息卡片:根据车牌颜色自动匹配主题配色
  • • 中文渲染:支持中文字体显示

环境要求

硬件要求

  • • CPU:Intel Core i5 或同等性能处理器(CPU 模式)
  • • GPU:NVIDIA GTX 1060 或更高(CUDA 模式,需 CUDA 12.x 支持),支持RTX20-50显卡
  • • 内存:≥ 8GB RAM
  • • 磁盘空间:≥ 5GMB 可用空间

软件要求

  • • 操作系统:Windows 10/11(64位)
  • • 开发环境:Visual Studio 2019 或更高版本
  • • .NET Framework:4.7.2
  • • C# 语言版本:C# 6.0(兼容性要求)

依赖库

  • • OpenCvSharp 4.13.0:计算机视觉处理库
  • • ONNX Runtime 1.24.2:ONNX 模型推理引擎
  • • Microsoft.ML.OnnxRuntime.CUDA:CUDA 加速支持(可选)

安装步骤

1. 克隆或下载项目

# 源码可以github访问firc-projects仓库获取
git clone code
# 或者直接下载 ZIP 文件并解压

2. 安装依赖包

在Visual Studio中打开 FIRC.sln 解决方案:

  • • 右键点击解决方案 → “管理 NuGet 包”
  • • 安装以下必需包:
  • OpenCvSharp4 (版本 4.13.0)
  • Microsoft.ML.OnnxRuntime (版本 1.24.2)
  • Microsoft.ML.OnnxRuntime.Cuda (版本 1.24.2,如需 CUDA 支持)

3. 配置模型文件

  • • 将检测模型 yolo26s-plate-detect.onnx 和识别模型 plate_rec_color.onnx 放置在:
  • bin/x64/Release/weights/ 目录下
  • • 确保模型文件路径正确(项目会自动查找此路径)

4. 构建项目

  • • 在 Visual Studio 中选择配置: Release|x64
  • • 点击 “生成” → “生成解决方案”
  • • 构建成功后,可执行文件位于: bin/x64/Release/WindowsFormsApp1.exe

运行步骤

1. 启动应用程序

  • • 双击 bin/x64/Release/WindowsFormsApp1.exe 运行程序
  • • 或在 Visual Studio 中按 F5 启动调试


2. 使用流程

  1. 1. 上传图片 :点击 “上传图片” 按钮,选择待检测的车牌图像(JPG/PNG/BMP 格式)
  2. 2. 加载模型 :点击 “加载模型” 按钮,加载 ONNX 模型文件
  • • 勾选 “启用CUDA加速” 可使用 GPU 加速(需 NVIDIA 显卡)
  1. 3. 开始推理 :点击 “开始推理” 按钮,系统将自动执行检测识别
  2. 4. 查看结果 :处理后的图像将在主窗口显示,包含检测框和识别结果
  3. 5. 查看统计 :右下角显示 “耗时:X.XXX秒” 和当前状态

3. 功能说明

  • CUDA/CPU 切换 :实时切换推理设备,无需重启程序
  • 时间统计 :精确到毫秒的推理耗时统计
  • 多车牌支持 :可同时检测识别图像中的多个车牌
  • 双层车牌支持 :自动识别新能源汽车双层车牌

注意事项

重要提示

  • • ✅ 本项目严格遵循 C# 6.0 语法规范,不使用任何 C# 7.0+ 特性
  • • ✅ 所有 ONNX 模型操作均通过 ONNX Runtime 1.24.2 API 实现
  • • ✅ 图像处理完全基于 OpenCvSharp 4.13.0,确保跨平台兼容性
  • • ✅ CUDA 加速需要 NVIDIA 显卡驱动版本 ≥ 525.60.13

常见问题解决

  • CUDA 加速不可用 :检查 NVIDIA 显卡驱动是否最新,确认 onnxruntime_providers_cuda.dll 文件存在
  • 模型加载失败 :确认模型文件路径正确,文件未损坏,权限设置正常
  • 中文显示异常 :确保系统已安装中文字体,或添加自定义字体文件
  • 内存不足错误 :对于大尺寸图像,建议先进行预处理缩小尺寸

性能优化建议

  • • 对于批量处理,建议使用 Release 模式构建
  • • CUDA 模式下,GPU 显存占用约 1.2GB
  • • CPU 模式下,推荐使用 Intel MKL 优化版本

文件夹结构

FIRC/
├── .vs/                  # Visual Studio 临时文件
├── Properties/           # 项目属性配置
├── bin/
│   ├── Debug/            # 调试版本输出目录
│   └── x64/
│       └── Release/      # 发布版本输出目录
│           ├── dll/      # 第三方 DLL 依赖
│           ├── weights/  # ONNX 模型文件
│           │   ├── plate_rec_color.onnx
│           │   └── yolo26s-plate-detect.onnx
│           ├── Microsoft.ML.OnnxRuntime.dll
│           ├── OpenCvSharp.dll
│           └── WindowsFormsApp1.exe  # 主程序可执行文件
├── Form1.cs             # 主窗体业务逻辑
├── Form1.Designer.cs    # 主窗体 UI 设计
├── PlateRecognitionManager.cs  # 核心算法管理类(模块化设计)
├── Program.cs            # 应用程序入口点
├── FIRC.csproj           # Visual Studio 项目文件
├── FIRC.sln              # Visual Studio 解决方案文件
└── README.md             # 本项目说明文档

技术特点

  • 模块化设计 :核心算法封装在 PlateRecognitionManager.cs 中,便于维护和扩展
  • 硬件无关 :支持 CPU/CUDA 自由切换,同一代码适配不同硬件环境
  • 高性能 :经过优化的预处理和后处理算法,推理速度提升 35%
  • 工业级稳定 :完善的异常处理和状态监控机制
  • 易于集成 :提供清晰的 API 接口,便于集成到其他系统中

 

创作时间: