news 2026/8/29 1:10:55

【上海晶珩睿莓 1 单板计算机】车牌识别

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【上海晶珩睿莓 1 单板计算机】车牌识别

【上海晶珩睿莓 1 单板计算机】车牌识别

本文介绍了上海晶珩睿莓 1 单板计算机结合 LPRNet 算法和 Ultralytics 库实现物车牌识别的项目设计,包括环境部署、软件包安装、模型获取、关键代码以及板端推理等相关流程。

项目介绍

  • 准备工作:OpenCV 安装、Ultralytics 软件包安装、预训练模型下载等;
  • 车牌识别:采用 LPRNet 算法及 ONNX 模型实现车牌识别的板端推理;

为了快速实现图像分类,需完成 OpenCV 部署和 Ultralytics 软件包的安装等操作。

准备工作

包括硬件连接、虚拟环境创建、OpenCV 安装、Ultralytics 库部署等。

硬件连接

  • 连接 WiFi 实现无线网络通信;
  • 使用 Micro-USB 数据线实现设备供电;

OpenCV 安装

OpenCV 是一个开源的计算机视觉库,广泛应用于图像处理、视频分析和机器学习等领域。

  • 安装 numpy 和 opencv
pipinstall-Upip numpy# 安装 numpypipinstallopencv-python opencv-contrib-python# opencv 主模块及 contrib
  • 验证安装
python3-c"import cv2,sys,numpy;print('OpenCV:',cv2.__version__,'NumPy:',numpy.__version__)"
  • 输出版本号

详见:OpenCV .

字体安装

为了方便显示中文车牌,安装 CJK 字体

sudoaptinstallfonts-noto-cjk fc-list|grep-i"Noto Sans CJK"|head-3

记录字体所在路径,如/usr/share/fonts/opentype/noto/NotoSansCJK-Regular.ttc以便调用。

Ultralytics 部署

Ultralytics 基于多年在计算机视觉和人工智能领域的基础研究,打造出尖端、先进的 YOLO 模型;具有速度快精度高操作简便等特点。

在目标检测、跟踪、实例分割、图像分类 和 姿态估计 等任务中表现出色。

  • 安装 ultralytics 软件包
sudoaptinstallpython3-dev python3-pip libopenblas-devsudopipinstallpython3-torchsudopipinstallultralytics
  • 验证安装
python3 -c "import ultralytics, sys, torch; print('✅ ultralytics', ultralytics.__version__, '| torch', torch.__version__, '| Python', sys.version.split()[0])"
  • 输出相应版本号

详见:ultralytics .

车牌识别

车牌识别网络(License Plate Recognition Network,LPRNet)是一种专为车牌识别设计的深度学习模型。

它采用端到端的训练方法,能够直接从原始图像中识别出车牌文本,无需进行传统的字符分割步骤。

这种设计使得 LPRNet 在处理车牌识别任务时更加高效和准确,特别是在面对复杂背景或不同国家的车牌样式时。

详见:LPRNet GitHub .

模型

下载所需模型文件;

wget https://github.com/h030162/PlateRecognition/blob/main/ocr_rec.py wget https://github.com/h030162/PlateRecognition/blob/main/license_models/dict.txt wget https://github.com/h030162/PlateRecognition/blob/main/license_models/license_ocr.onnx wget https://github.com/h030162/PlateRecognition/blob/main/license_models/y11n-pose_plate_best.onnx

将文件存放在对应路径

license_plate_recognition ├── img │ ├── yue.jpg ├── lpr_onnx.py ├── model │ ├── dict.txt │ ├── license_ocr.onnx │ └── y11n-pose_plate_best.onnx └── ocr_rec.py

参考:PlateRecognition | Github .

流程图

完成

开始

载入图片

初始化

YOLO检测车牌

遍历列表

裁剪车牌区域

OCR识别文字

收集结果

绘制标签&外框

显示结果

退出

代码

终端执行touch lpr_onnx.py新建程序文件,并添加如下代码

#!/usr/bin/env python# -*- coding: utf-8 -*-importnumpyasnpimportcv2fromocr_recimportTextRecognizer,init_argsfromPILimportImage,ImageDraw,ImageFontfromultralyticsimportYOLOimportwarnings warnings.filterwarnings("ignore")# ========== figure ==========#IMG_FILE = "./img/yue.jpg"args=init_args().parse_args()IMG_FILE=args.image_pathor'./img/test.jpg'# image path# 使用方法:python lpr_onnx.py --image_path ./img/jing.jpg# =========== class ===========classPlateRecognizer:def__init__(self,det_model_path="./model/y11n-pose_plate_best.onnx"):self.model_det=YOLO(det_model_path)parser=init_args().parse_args()self.model_ocr=TextRecognizer(parser)defrecognize(self,img):plate_objs=[]plates=self.model_det(img,verbose=False)forplate,confinzip(plates[0].boxes.xyxy,plates[0].boxes.conf):x1,y1,x2,y2=map(int,plate.cpu())plate_img=img[y1:y2,x1:x2]try:rec_res,_=self.model_ocr([plate_img])exceptExceptionasE:print(E)continueiflen(rec_res[0])>0:plate_objs.append({'text':rec_res[0][0],'score_text':rec_res[0][1],'bbox':[x1,y1,x2,y2],'score_bbox':conf.cpu().numpy().item()})returnplate_objsdefDrawPlateNum(img,plate_num,x1,y1):img_rgb=cv2.cvtColor(img,cv2.COLOR_BGR2RGB)img_pil=Image.fromarray(img_rgb)draw=ImageDraw.Draw(img_pil)font=ImageFont.truetype("/usr/share/fonts/opentype/noto/NotoSansCJK-Regular.ttc",40)# 系统字体# -------- 优化标签显示,增加填充背景,兼容新版 Pillow ----------------left,top,right,bottom=draw.textbbox((0,0),plate_num,font=font)tw,th=right-left,bottom-top# 蓝色填充条draw.rectangle([(x1,y1-th-8),(x1+tw,y1)],fill=(0,0,255))# BGR 蓝色# 绿色文字draw.text((x1,y1-th-16),plate_num,font=font,fill=(0,255,0))# BGR 绿色returncv2.cvtColor(np.array(img_pil,dtype=np.uint8),cv2.COLOR_RGB2BGR)# ========== 主程序 ==========defmain():img=cv2.imread(IMG_FILE)ifimgisNone:print(f"未找到图片:{IMG_FILE}")cv2.waitKey(0)returnrecognizer=PlateRecognizer()plates=recognizer.recognize(img)forpinplates:x1,y1,x2,y2=p['bbox']cv2.rectangle(img,(x1,y1),(x2,y2),(255,0,0),2)img=DrawPlateNum(img,p['text'],x1,y1)print(f"车牌:{p['text']}置信度:{p['score_text']:.4f}框置信度:{p['score_bbox']:.4f}")cv2.imshow("LPR",img)cv2.waitKey(0)cv2.destroyAllWindows()if__name__=="__main__":main()

保存代码。

效果

  • 终端执行python lpr_onnx.py --image_path ./img/jing.jpg指令,对目标车牌进行识别
  • 终端打印识别到的车牌号、置信度等信息

  • 弹窗显示识别结果

  • 更多测试效果

总结

本文介绍了上海晶珩睿莓 1 单板计算机结合 LPRNet 算法和 Ultralytics 库实现车牌识别的项目设计,包括环境搭建、预训练模型、工程代码和效果演示等,为相关产品在边缘 AI 领域的快速开发和应用设计提供了参考。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/26 8:46:30

OptiScaler终极指南:跨平台超分辨率技术完全解析

OptiScaler是一款革命性的图形增强工具,专为AMD、Intel和NVIDIA显卡用户设计。通过集成DLSS、XeSS、FSR2等多种超分辨率技术,它能够在保持游戏性能的同时显著提升画面质量,为不同硬件平台的玩家提供完美的画质优化解决方案。 【免费下载链接】…

作者头像 李华
网站建设 2026/8/28 19:21:14

Qwen-Image-Edit-2509:开启多图智能编辑新篇章

Qwen-Image-Edit-2509:开启多图智能编辑新篇章 【免费下载链接】Qwen-Image-Edit-2509 项目地址: https://ai.gitcode.com/hf_mirrors/Qwen/Qwen-Image-Edit-2509 在当今AI图像编辑领域,Qwen-Image-Edit-2509以其突破性的多图编辑能力和卓越的一…

作者头像 李华
网站建设 2026/8/23 11:40:19

Qwen3-VL在STEM与数学推理中的卓越表现:多模态因果分析新突破

Qwen3-VL在STEM与数学推理中的卓越表现:多模态因果分析新突破 在当今AI技术快速演进的背景下,一个长期悬而未决的问题始终困扰着研究者:机器能否真正“理解”图像背后的逻辑? 尤其是在科学、工程和数学这类高度依赖抽象思维与空间…

作者头像 李华
网站建设 2026/8/20 17:48:47

微PE官网系统中嵌入Qwen3-VL实现离线AI诊断助手功能

微PE官网系统中嵌入Qwen3-VL实现离线AI诊断助手功能 在一次现场技术支持任务中,工程师面对一台蓝屏死机的办公电脑束手无策——网络中断、日志无法导出、错误代码晦涩难懂。他只能凭经验反复尝试重启与驱动回滚,耗时近两小时才勉强恢复系统。这样的场景在…

作者头像 李华
网站建设 2026/8/28 22:14:57

跨平台字体统一解决方案:苹方字体在网页设计中的技术实现

跨平台字体统一解决方案:苹方字体在网页设计中的技术实现 【免费下载链接】PingFangSC PingFangSC字体包文件、苹果平方字体文件,包含ttf和woff2格式 项目地址: https://gitcode.com/gh_mirrors/pi/PingFangSC 在当今多设备浏览环境中&#xff0c…

作者头像 李华
网站建设 2026/8/27 17:53:18

如何快速使用TTGTagCollectionView:iOS标签流控件的完整指南

如何快速使用TTGTagCollectionView:iOS标签流控件的完整指南 【免费下载链接】TTGTagCollectionView Useful for showing text or custom view tags in a vertical or horizontal scrollable view and support Autolayout at the same time. It is highly customiza…

作者头像 李华