news 2026/4/23 16:18:37

【上海晶珩睿莓 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/4/23 10:30:53

Qwen3-VL生态保护区管理:人类活动入侵图像识别

Qwen3-VL在生态保护区管理中的应用:人类活动入侵的智能识别 在偏远山林深处,一个隐蔽的帐篷悄然搭起;一条未经许可的小路被踩出,通向珍稀植物分布区;夜幕下,车灯划破寂静——这些看似微小的人类活动&#x…

作者头像 李华
网站建设 2026/4/23 10:29:58

3分钟掌握OptiScaler:让你的游戏画质瞬间提升200%

3分钟掌握OptiScaler:让你的游戏画质瞬间提升200% 【免费下载链接】OptiScaler DLSS replacement for AMD/Intel/Nvidia cards with multiple upscalers (XeSS/FSR2/DLSS) 项目地址: https://gitcode.com/GitHub_Trending/op/OptiScaler 还在为游戏卡顿和画面…

作者头像 李华
网站建设 2026/4/23 10:33:14

OptiScaler:重新定义游戏画质优化的全能解决方案

OptiScaler:重新定义游戏画质优化的全能解决方案 【免费下载链接】OptiScaler DLSS replacement for AMD/Intel/Nvidia cards with multiple upscalers (XeSS/FSR2/DLSS) 项目地址: https://gitcode.com/GitHub_Trending/op/OptiScaler 在当今游戏画质追求极…

作者头像 李华
网站建设 2026/4/23 10:30:52

Tunnelto完整教程:零配置实现本地服务全球访问的终极方案

Tunnelto完整教程:零配置实现本地服务全球访问的终极方案 【免费下载链接】tunnelto Expose your local web server to the internet with a public URL. 项目地址: https://gitcode.com/GitHub_Trending/tu/tunnelto 你是否曾经遇到过这样的困境&#xff1a…

作者头像 李华
网站建设 2026/4/22 16:53:17

Qwen3-VL银行反洗钱:交易凭证图像异常检测

Qwen3-VL银行反洗钱:交易凭证图像异常检测 在现代银行业务中,一张截图可能隐藏着百万级的资金风险。 随着数字支付和远程开户的普及,客户提交的转账截图、电子发票、合同扫描件等图像类凭证已成为日常操作的一部分。但这些看似普通的图片&…

作者头像 李华
网站建设 2026/4/23 10:30:16

Qwen3-VL赋能PyCharm插件开发:智能注释与错误提示生成

Qwen3-VL赋能PyCharm插件开发:智能注释与错误提示生成 在现代软件开发中,一个常见的场景是:你正在调试一段Python代码,突然弹出一个模糊的错误对话框,堆栈信息冗长却难以定位问题根源。或者,你在阅读他人遗…

作者头像 李华