【毕设参考】HaaS Python 云端一体AI【手势识别】窝在家里看电视不想动?想换台懒得找遥控器?试试解锁智能设备新玩法

简介: 【毕设参考】HaaS Python 云端一体AI【手势识别】窝在家里看电视不想动?想换台懒得找遥控器?试试解锁智能设备新玩法

手势识别系统

  手势识别在用户交互中越来越广泛的使用,比如通过手势进行隔空点赞,通过手势控制设备等,已成为一种较为基础的功能。


背景知识

  手势识别是用摄像机或摄像头采集含有手势的图像或视频流,并自动在图像中检测和跟踪手势,属于机器视觉中重要的一个应用。本章中使用阿里云视觉智能开放平台的静态手势识别功能来进行识别,目前支持的手势类型有:


ok:确认

palm:手掌

left:握拳且大拇指向左

right:握拳且大拇指向右

good:点赞(即握拳且大拇指向上)

mute:噤声(将食指放在嘴上即被识别为噤声)

down:握拳且大拇指向下

准备

M5Stack Core2开发板 一套

M5Stack Unit CAM摄像头 一个

连接线 一根

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


名称 数量 参考链接

M5Stack Core2开发版 1 M5Stack Core2

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

摄像头 1 M5Stack Unit CAM摄像头

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

  硬件连线图如下图所示:




云端平台功能开通

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


  因此,整个步骤分为:


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

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

推送脚本到M5Stack Core2并运行手势识别;

注册阿里云账号

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


HaaS云端积木平台

登录HaaS官网

  进入阿里云官网,HaaS官网 。




进入HaaS云端积木控制台   

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



创建设备

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






获取设备的三元组

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






设备端开发

开发环境

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


创建解决方案

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




  下载手势识别并解压,将解压后的所有脚本进行复制到“gesture_recognization”工程根目录中,然后进行如下设定完成设备端代码的开发。


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


修改路由器名称及密码

  修改gesture_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"

运行结果

本地查看

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


  推送此脚本到M5Stack之后,串口会周期性的打印如下日志,并且在识别到正确手势后会在屏幕上显示红色“Gesture: good”的字样(这里good表示“good:点赞(即握拳且大拇指向上)”的手势)。


Wi-Fi is connecting...

Wi-Fi is connected

IP: 172.16.2.55

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

upload--->{'qos': 1, 'payload': '{"version": "1.0", "id": 1, "params": {"ext": "{\\"fileName\\": \\"gesture.jpg\\", \\"fileId\\": \\"jrxlXxCYhEusz6sXJKSa010200\\", \\"filePosition\\": \\"lp\\"}", "eventType": "haas.faas", "eventName": "handGesture", "argInt": 1}}', 'topic': '/sys/a1kJJvGN9ko/3xG1QN7Q0wLxVHfCsZP5/thing/event/hli_event/post'}

get response time : 39

download <----{'msg_id': 1087807190, 'service_id': 'hli_async_service', 'params': '{"ext":"{\\"height\\":127,\\"result\\":\\"success\\",\\"score\\":0.9921875,\\"type\\":\\"good\\",\\"width\\":73,\\"x\\":146,\\"y\\":94}","commandName":"handGestureReply","commandType":"haas.faas","argInt":1}', 'code': 0, 'params_len': 189}

recognize hand gesture : good





相关文章
|
11天前
|
Python
解锁Python并发新世界:线程与进程的并行艺术,让你的应用性能翻倍!
【7月更文挑战第9天】并发编程**是同时执行多个任务的技术,提升程序效率。Python的**threading**模块支持多线程,适合IO密集型任务,但受GIL限制。**multiprocessing**模块允许多进程并行,绕过GIL,适用于CPU密集型任务。例如,计算平方和,多线程版本使用`threading`分割工作并同步结果;多进程版本利用`multiprocessing.Pool`分块计算再合并。正确选择能优化应用性能。
|
16天前
|
设计模式 数据库 Python
震撼!Python元类:解锁编程宇宙的终极秘密武器
【7月更文挑战第4天】Python的元类是创建类的类,用于定制类的行为。例如,通过元类`MyMeta`,可在创建类时动态添加属性,如`version`。在ORM中,元类能自动将类属性映射为数据库表字段。另外,元类也能实现设计模式,如单例模式,确保类只有一个实例。元类提供对Python底层机制的控制,增强了代码的灵活性和功能性。
|
1天前
|
供应链 数据挖掘 数据处理
聚合数据,洞察未来!Python聚合术,解锁数据背后的商业密码!
【7月更文挑战第19天】数据聚合整合分散数据,揭示隐藏模式,助力企业决策。Python的Pandas与NumPy库简化了这一过程,提供高效的数据处理。例如,通过Pandas的groupby和agg函数,可以按产品ID和日期聚合销售数据,计算每日销量和收入。聚合后,企业可洞察产品销售趋势、季节性变化,优化策略,预测需求。Python丰富的资源和活跃社区支持各层次用户进行数据探索。
16 7
|
2天前
|
存储 Python
震惊!Python并查集:解锁数据结构新姿势,让你从菜鸟秒变大神!
【7月更文挑战第18天】并查集,一种处理不相交集合的树形数据结构,支持Union(合并)和Find(查询)操作。Python实现中,用字典存储元素及其父节点,初始时每个元素为根。通过路径压缩提高效率。应用包括网络连通性判断、动态连通性检测和集合操作。掌握并查集,提升编程技能,解决复杂问题。开始探索,成为数据结构大师!
|
1天前
|
存储 大数据 索引
解锁Python隐藏技能:构建高效后缀树Suffix Tree,处理大数据游刃有余!
【7月更文挑战第19天】Suffix Tree 概述:** 为高效处理字符串搜索、匹配和大数据分析,后缀树是一种优化数据结构,可快速检索后缀、执行最长公共后缀查询及字符串排序。Python中虽无内置实现,但可通过第三方库或自建代码构造。应用于字符串搜索、生物信息学等领域,提升大数据处理效率。
14 3
|
3天前
|
算法 Java 程序员
解锁Python高效之道:并发与异步在IO与CPU密集型任务中的精准打击策略!
【7月更文挑战第17天】在数据驱动时代,Python凭借其优雅语法和强大库支持成为并发处理大规模数据的首选。并发与异步编程是关键,包括多线程、多进程和异步IO。对于IO密集型任务,如网络请求,可使用`concurrent.futures`和`asyncio`;CPU密集型任务则推荐多进程,如`multiprocessing`;`asyncio`适用于混合任务,实现等待IO时执行CPU任务。通过这些工具,开发者能有效优化资源,提升系统性能。
16 4
|
4天前
|
JavaScript 前端开发 UED
WebSocket在Python Web开发中的革新应用:解锁实时通信的新可能
【7月更文挑战第16天】WebSocket是实现Web实时通信的协议,与HTTP不同,它提供持久双向连接,允许服务器主动推送数据。Python有多种库如websockets和Flask-SocketIO支持WebSocket开发。使用Flask-SocketIO的简单示例包括定义路由、监听消息事件,并在HTML中用JavaScript建立连接。WebSocket提高了实时性、减少了服务器压力,广泛应用于聊天、游戏等场景。
12 1
|
8天前
|
机器学习/深度学习 数据采集 数据挖掘
解锁 Python 数据分析新境界:Pandas 与 NumPy 高级技巧深度剖析
【7月更文挑战第12天】Python的Pandas和NumPy库助力高效数据处理。Pandas用于数据清洗,如填充缺失值和转换类型;NumPy则擅长数组运算,如元素级加法和矩阵乘法。结合两者,可做复杂数据分析和特征工程,如产品平均销售额计算及销售额标准化。Pandas的时间序列功能,如移动平均计算,进一步增强分析能力。掌握这两者高级技巧,能提升数据分析质量和效率。
21 4
|
7天前
|
存储 算法 Python
“解锁Python高级数据结构新姿势:图的表示与遍历,让你的算法思维跃升新高度
【7月更文挑战第13天】Python中的图数据结构用于表示复杂关系,通过节点和边连接。常见的表示方法是邻接矩阵(适合稠密图)和邻接表(适合稀疏图)。图遍历包括DFS(深度优先搜索)和BFS(广度优先搜索):DFS深入探索分支,BFS逐层访问邻居。掌握这些技巧对优化算法和解决实际问题至关重要。**
10 1
|
8天前
|
Python
深度剖析 Python asyncio 库:解锁异步编程的无限可能!
【7月更文挑战第12天】Python的`asyncio`库揭示了异步编程的力量,它基于事件循环运行协程以实现高效并发。通过定义`async`函数,如`async_task`,并使用`asyncio.run`执行,我们可以处理单个任务。`asyncio.gather`则用于并发执行多个任务,例如在下载文件的场景中。异常处理可通过`try/except`嵌入到异步函数中。掌握这些,能提升I/O密集型任务的性能,开启异步编程新境界。
16 1

热门文章

最新文章