前言
随着人工智能和图像处理技术的发展,车牌识别系统在交通管理、智能停车场、安防监控等领域得到了广泛应用。
本文介绍如何使用 C# 结合 OpenCVSharp 与 ONNX Runtime 实现一个轻量级的车牌识别系统,专注于 车牌颜色识别 和 车牌号码识别。
需要注意的是:本文内容不涉及车牌检测(即假设你已获取了裁剪好的车牌图像),如需车牌检测部分,可参考另一篇文章《WinForm 部署 YOLOv7 + CRNN 实现车牌颜色识别及号码检测》。
本项目基于训练好的 ONNX 模型进行推理,适合希望快速集成车牌识别功能的开发者或企业使用。
项目背景与模型说明
1、模型结构简介
本文使用的模型是基于 CRNN 的改进版本,支持同时识别车牌颜色与车牌号码。模型结构如下:
该模型由两个分支组成:
-
左边为车牌颜色识别分支;
-
右边为车牌字符识别分支。
开发者只需训练颜色分支即可完成整个模型的功能适配。
模型训练与导出
1、准备工作
下载或准备自己的车牌颜色数据集;
使用已有训练好的车牌字符识别模型作为基础;
配置 Python 环境并安装相关依赖(PyTorch、OpenCV等);
2、训练颜色分支
运行以下命令进行颜色分支训练:
python train_fix_color.py \
--weights saved_model/plate_rec.pth \
--train_path datasets/train \
--val_path datasets/val \
--model_path color_model
训练结果将保存在 color_model 文件夹中。
3、导出ONNX模型
训练完成后,导出 ONNX 格式的模型以供 C# 调用:
python export.py \
--weights saved_model/plate_rec_color.pth \
--save_path saved_model/plate_rec_color.onnx \
--simplify
4、ONNX推理测试
验证模型是否正常工作:
python onnx_infer.py \
--onnx_file saved_model/plate_rec_color.onnx \
--image_path images/test.jpg
C# 实现车牌识别功能
1、开发环境配置
开发工具:Visual Studio 2019
框架:.NET Framework 4.7.2
第三方库:
OpenCvSharp4(用于图像处理)
ONNX Runtime(用于加载和推理ONNX模型)
通过 NuGet 安装所需包:
Install-Package OpenCvSharp4
Install-Package OpenCvSharp4.runtime.win
Install-Package onnxruntime
2、主要代码逻辑
界面设计
使用 WinForm 设计简单界面,包含:
-
图像选择按钮;
-
识别执行按钮;
-
显示结果文本框;
-
图像显示区域(PictureBox)。
核心识别类 PlateManager
封装模型加载与推理过程,主要方法包括:
-
LoadWeights():加载 ONNX 模型; -
Inference(Bitmap bmp):传入车牌图片,返回识别结果(颜色 + 车牌号)。
调用示例代码
private void button2_Click(object sender, EventArgs e)
{
if (pictureBox1.Image == null)
{
return;
}
Stopwatch sw = new Stopwatch();
sw.Start();
var result = pm.Inference(bmp); // 执行推理
sw.Stop();
this.Text = "耗时:" + sw.Elapsed.TotalSeconds.ToString("F3") + " 秒";
textBox1.Text = "车牌颜色:" + result.CarColor + "\r\n车牌号:" + result.CarNumber;
}
运行效果
识别结果示例
五、注意事项
若使用双层车牌,请提前将上下两行字符合并为一行图像再进行识别,否则可能导致颜色识别错误。
图像预处理需与训练时保持一致,确保输入格式统一。
ONNX 模型推理速度较快,适用于嵌入式或边缘设备部署。
总结
本文详细介绍了如何使用 C# 结合 OpenCVSharp 和 ONNX Runtime 实现车牌颜色与车牌号的识别功能。该项目基于轻量级深度学习模型,在保证识别准确率的同时也具备良好的实时性,非常适合用于资源受限场景下的智能识别系统。
最后
如果你觉得这篇文章对你有帮助,不妨点个赞支持一下!你的支持是我继续分享知识的动力。如果有任何疑问或需要进一步的帮助,欢迎随时留言。
也可以加入微信公众号 [DotNet技术匠] 社区,与其他热爱技术的同行一起交流心得,共同成长!
优秀是一种习惯,欢迎大家留言学习!
作者:未来自主研究中心
出处:mp.weixin.qq.com/s/rpt5afGrDMVGLFSfmUpakA
声明:网络内容,仅供学习,尊重版权,侵权速删,歉意致谢!