使用 ESP32 + HaaS Python 打造云端一体车牌识别系统

简介:    车牌识别系统已经融入到大众的生活中,现在的停车场大都支持车牌识别进出停车场。   车牌识别是OCR识别领域中的一种,通过深度学习训练出能够识别各种车牌的模型,有的系统使用边缘设备进行识别,有的使用云端进行识别。本章中使用HaaS云端积木中车牌识别功能进行识别,在识别到车牌后显示车牌号码。

准备

M5Stack Core2开发板 一套

M5Stack Unit CAM摄像头 一个

连接线 一根

涉及到的硬件购买链接如下,仅供参考,不负责商家发货的品质保障等问题!


名称 数量 参考购买链接

M5Stack Core2开发版 1 M5Stack Core2

microUSB数据线 1 M5Stack Core2开发套件自带

摄像头 1 M5Stack Unit CAM摄像头

连接线 1条 M5Stack GROVE连接线 请选用10cm长即可

  硬件连线图如下图所示:




2、云端平台功能开通

在本案例中涉及到云端平台功能都聚合在HaaS云端积木中,所以无需单独使用 对象存储OSS 和 视觉智能开发平台。


  因此,整个步骤分为:


注册阿里云账号并登录阿里云账号;

在HaaS官网中的云端积木控制台创建设备;

推送脚本到M5Stack Core2并运行车牌识别;

2.1、注册阿里云账号

  进入阿里云官网,注册阿里云账号 。


2.2、HaaS云端积木平台

登录HaaS官网

  登录阿里云HaaS官网 。




进入HaaS云端积木控制台

  如上图所示,点击右上角的“控制台”,进入HaaS云端积木的控制台页面。




创建设备

  在左侧导航栏设备管理中,可以看到产品和设备选项,点击“产品”,可以看到平台默认创建了“haas_正式游客产品”这个产品; 所以开发者只需要创建设备即可。点击“批量添加”, 添加方式为“自动生成”, 申请数量可填为“1”个,即可完成新设备的创建。






获取设备的三元组

  在设备的列表中,新创建的设备上点击“查看”,就可以获得设备的三元组信息,之后这个三元组信息会在设备端代码中使用到。






3、设备端开发

3.1、开发环境

  在进行下一步之前请确保M5StackCore2开发环境已经搭建完毕。详情请参考M5StackCore2开发环境的说明。


3.2、创建解决方案

  如下图所示,打开VS Code之后在新建一个基于helloworld的python工程,设定好工程名称(“license_plate_recognization”)及工作区路径之后,硬件类型选择M5StackCore2,点击立即创建,创建一个Python轻应用的解决方案。




  下载车牌识别代码解压后,将所有脚本进行复制到“license_plate_recognization”工程根目录中替换原有文件,然后进行如下设定完成设备端代码的开发。


Python脚本的详细说明请参考脚本内嵌的文字注释


修改路由器名称及密码

  修改license_plate_recognization工程里main.py中SSID和PWD的值为读者实际要连接的路由器的名称及密码(请注意名称和密码都需要放在''符号中间)。


# Wi-Fi SSID和Password设置

SSID='Your-AP-SSID'

PWD='Your-AP-Password'

  修改完成之后connect_wifi函数就会连接读者自己设定的路由器。


修改设备的三元组信息

  按照[获取设备的三元组]获取三元组信息,填入main.py中:


# HaaS设备三元组

productKey = "Your-ProductKey"

deviceName  = "Your-devicename"

deviceSecret  = "Your-deviceSecret"

4、运行结果

  在网络连接成功后,屏幕上将打印出IP地址和"NTP Done",如果迟迟不能显示“NTP Done”,请长按电源键关机同时拔掉USB线重新上电运行。


  推送此脚本到M5Stack之后,串口会周期性的打印如下日志,并且识别到车牌后在屏幕上显示红色XXXX Detected的字样。


Wi-Fi is connected

IP: 192.168.3.25

NTP start

NTP done

establish tcp connection with server(host='a1kJJvGN9ko.iot-as-mqtt.cn-shanghai.aliyuncs.com', port=[443])

tcp_connect: can only connect from state CLOSED

success to establish tcp, fd=54

link platform connected

get response time : 718

{'msg_id': 1127155327, 'service_id': 'hli_async_service', 'params': '{"ext":"{\\"message\\":\\"recognize call Exception\\",\\"result\\":\\"failed\\"}","commandType":"haas.faas","commandName":"ocrCarNoReply","argInt":1}', 'code': 0, 'params_len': 141}

do not detect!

get response time : 2265

{'msg_id': 1154933759, 'service_id': 'hli_async_service', 'params': '{"ext":"{\\"confidence\\":0.73655415,\\"plateNumber\\":\\"\u6d59AD12345\\",\\"plateType\\":\\"\u65b0\u80fd\u6e90\u8f66\\",\\"plateTypeConfidence\\":0.9999995,\\"result\\":\\"success\\",\\"roi\\":{\\"h\\":87,\\"w\\":211,\\"x\\":76,\\"y\\":38}}","commandType":"haas.faas","commandName":"ocrCarNoReply","argInt":1}', 'code': 0, 'params_len': 270}

detect: 浙AD12345

get response time : 735

————————————————


相关文章
|
20天前
|
机器学习/深度学习 传感器 存储
使用 Python 实现智能地震预警系统
使用 Python 实现智能地震预警系统
106 61
|
4天前
|
弹性计算 数据管理 数据库
从零开始构建员工管理系统:Python与SQLite3的完美结合
本文介绍如何使用Python和Tkinter构建一个图形界面的员工管理系统(EMS)。系统包括数据库设计、核心功能实现和图形用户界面创建。主要功能有查询、添加、删除员工信息及统计员工数量。通过本文,你将学会如何结合SQLite数据库进行数据管理,并使用Tkinter创建友好的用户界面。
从零开始构建员工管理系统:Python与SQLite3的完美结合
|
8天前
|
机器学习/深度学习 数据采集 存储
使用Python实现智能农业灌溉系统的深度学习模型
使用Python实现智能农业灌溉系统的深度学习模型
49 6
|
12天前
|
机器学习/深度学习 数据采集 算法框架/工具
使用Python实现智能生态系统监测与保护的深度学习模型
使用Python实现智能生态系统监测与保护的深度学习模型
45 4
|
Python
Python在云端编程之IPython notebook
Python在云端编程之IPython notebook 如果本地编程考虑到Python版本,机器位数,编译环境,科学栈安装等等繁琐的事,弄得你焦头烂额,不如移步云端,省去这些繁琐过程,在云端编程是很享受的事,当前你只需要:有网,有浏览器——就行!已经内置了科学栈Numpy、pandas等等,不管是科研还新手都可以即刻开始! 1.打开网址Wakari(https:
1540 0
|
10天前
|
设计模式 开发者 Python
Python编程中的设计模式:工厂方法模式###
本文深入浅出地探讨了Python编程中的一种重要设计模式——工厂方法模式。通过具体案例和代码示例,我们将了解工厂方法模式的定义、应用场景、实现步骤以及其优势与潜在缺点。无论你是Python新手还是有经验的开发者,都能从本文中获得关于如何在实际项目中有效应用工厂方法模式的启发。 ###
|
3天前
|
存储 人工智能 数据挖掘
从零起步,揭秘Python编程如何带你从新手村迈向高手殿堂
【10月更文挑战第32天】Python,诞生于1991年的高级编程语言,以其简洁明了的语法成为众多程序员的入门首选。从基础的变量类型、控制流到列表、字典等数据结构,再到函数定义与调用及面向对象编程,Python提供了丰富的功能和强大的库支持,适用于Web开发、数据分析、人工智能等多个领域。学习Python不仅是掌握一门语言,更是加入一个充满活力的技术社区,开启探索未知世界的旅程。
12 5
|
3天前
|
人工智能 数据挖掘 开发者
探索Python编程:从基础到进阶
【10月更文挑战第32天】本文旨在通过浅显易懂的语言,带领读者从零开始学习Python编程。我们将一起探索Python的基础语法,了解如何编写简单的程序,并逐步深入到更复杂的编程概念。文章将通过实际的代码示例,帮助读者加深理解,并在结尾处提供练习题以巩固所学知识。无论你是编程新手还是希望提升编程技能的开发者,这篇文章都将为你的学习之旅提供宝贵的指导和启发。
|
8天前
|
数据处理 Python
从零到英雄:Python编程的奇幻旅程###
想象你正站在数字世界的门槛上,手中握着一把名为“Python”的魔法钥匙。别小看这把钥匙,它能开启无限可能的大门,引领你穿梭于现实与虚拟之间,创造属于自己的奇迹。本文将带你踏上一场从零基础到编程英雄的奇妙之旅,通过生动有趣的比喻和实际案例,让你领略Python编程的魅力,激发内心深处对技术的渴望与热爱。 ###
|
11天前
|
数据采集 机器学习/深度学习 人工智能
Python编程入门:从基础到实战
【10月更文挑战第24天】本文将带你进入Python的世界,从最基础的语法开始,逐步深入到实际的项目应用。我们将一起探索Python的强大功能和灵活性,无论你是编程新手还是有经验的开发者,都能在这篇文章中找到有价值的内容。让我们一起开启Python的奇妙之旅吧!