使用 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

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


相关文章
|
5天前
|
机器学习/深度学习 IDE 数据挖掘
如何系统地自学python?
如何系统地自学python?
18 1
|
2天前
|
编解码 Java API
Jmeter--控制器--详解,2024年最新系统学Python从零开始
Jmeter--控制器--详解,2024年最新系统学Python从零开始
|
3天前
|
Python
【python学习小案例】提升兴趣之模拟系统入侵,2024年最新面试阿里运营一般问什么
【python学习小案例】提升兴趣之模拟系统入侵,2024年最新面试阿里运营一般问什么
|
5天前
|
前端开发 UED Python
Wagtail-基于Python Django的内容管理系统CMS实现公网访问
Wagtail-基于Python Django的内容管理系统CMS实现公网访问
|
5天前
|
运维 监控 Ubuntu
Python实现ubuntu系统进程内存监控
Python实现ubuntu系统进程内存监控
17 1
|
机器学习/深度学习 编解码 达摩院
HaaS轻应用(Python):基于HaaS-AI的图像分类
HaaS 即 Hardware as a Service, 它是加速AIoT开发者创新的一个积木平台。Python轻应用是跑在HaaS积木平台上的一套应用框架。他是基于MicroPython进行开发,继承了python优美简介的语法,同时提供了便捷的嵌入式硬件操作库。
HaaS轻应用(Python):基于HaaS-AI的图像分类
|
2天前
|
Python
10个python入门小游戏,零基础打通关,就能掌握编程基础_python编写的入门简单小游戏
10个python入门小游戏,零基础打通关,就能掌握编程基础_python编写的入门简单小游戏
|
4天前
|
网络协议 Unix Python
Python编程-----网络通信
Python编程-----网络通信
8 1
|
5天前
|
JSON 数据格式 开发者
pip和requests在Python编程中各自扮演着不同的角色
【5月更文挑战第9天】`pip`是Python的包管理器,用于安装、升级和管理PyPI上的包;`requests`是一个HTTP库,简化了HTTP通信,支持各种HTTP请求类型及数据交互。两者在Python环境中分别负责包管理和网络请求。
33 5
|
5天前
|
存储 Python 容器
Python高级编程
Python集合包括可变的set和不可变的frozenset,用于存储无序、不重复的哈希元素。创建集合可使用{}或set(),如`my_set = {1, 2, 3, 4, 5}`。通过add()添加元素,remove()或discard()删除元素,如`my_set.remove(3)`。
16 0