【一步步开发AI运动小程序】十、姿态动作相似度比较
随着人工智能技术的不断发展,阿里体育等IT大厂,推出的“乐动力”、“天天跳绳”AI运动APP,让云上运动会、线上运动会、健身打卡、AI体育指导等概念空前火热。那么,能否将这些在APP成功应用的场景搬上小程序,分享这些概念的红利呢?本系列文章就带您一步一步从零开始开发一个AI运动小程序,本系列文章将使用“云智AI运动识别小程序插件”,请先行在微信服务市场或官网了解详情。
在姿态、动作、运动检测时,采用检测规则计算器虽然非常便捷了,但是为了进一步减少开发者在运动适配中的工作量,方案还提代了一个姿态动作相似度比较功能,本篇就为您介绍此功能的运用。
一、采集样本动作帧
在进行姿态比较前,需要采集样本动作帧的人体关键点数据,采集样本帧推荐使用们的“姿态调试的辅助桌面工具”,具体使用请参考上篇工具的使用。
二、执行姿态比较
姿态相似度比较能力由calc.PoseComparer类提供。
//样本动作人体关键点
const sample =
[{y:95.41808288282594,x:214.42673274576924,score:0.51611328125,name:"nose"},
{y:84.61684727250136,x:221.80983627909686,score:0.7265625,name:"left_eye"},
{y:87.59059985661885,x:202.12153237356293,score:0.59130859375,name:"right_eye"},
{y:92.85449529945058,x:234.93538334278358,score:0.814453125,name:"left_ear"},
{y:99.07546188234281,x:188.58581196413604,score:0.6806640625,name:"right_ear"},
{y:149.86859452983884,x:271.3040866650822,score:0.7246093153953552,name:"left_shoulder"},
{y:162.78905492065545,x:158.09624324078422,score:0.82666015625,name:"right_shoulder"},
{y:236.41516213602512,x:280.8747980656871,score:0.728515625,name:"left_elbow"},
{y:246.8062369181066,x:156.3188420992395,score:0.55859375,name:"right_elbow"},
{y:305.46100866896046,x:286.61722490605007,score:0.6591796875,name:"left_wrist"},
{y:313.80120003234475,x:152.9006975047454,score:0.70849609375,name:"right_wrist"},
{y:304.5039375289,x:251.342317172392,score:0.87646484375,name:"left_hip"},
{y:303.68360752741575,x:189.6796075527766,score:0.8740234375,name:"right_hip"},
{y:431.38422581120494,x:237.66987231438497,score:0.70703125,name:"left_knee"},
{y:430.01698132540423,x:189.6796075527766,score:0.8017578125,name:"right_knee"},
{y:529.8258287888553,x:229.19295650242066,score:0.6884765625,name:"left_ankle"},
{y:534.747908937738,x:201.71134233782658,score:0.578125,name:"right_ankle"}];
//当前帧动作
const frame =
[{y:154.06250001297832,x:258.7499999883252,score:0.728515625,name:"nose"},
{y:143.12500001305142,x:254.37499998835446,score:0.56298828125,name:"left_eye"},
{y:143.75001908653357,x:255.937499988344,score:0.69482421875,name:"right_eye"},
{y:143.984394086532,x:229.99999998851743,score:0.43115234375,name:"left_ear"}
,{y:146.17187501303107,x:236.09374998847667,score:0.4919433891773224,name:"right_ear"},
{y:201.4062690861481,x:205.9375190621646,score:0.51416015625,name:"left_shoulder"},
{y:202.03125001265758,x:227.96874998853102,score:0.66259765625,name:"right_shoulder"},
{y:281.25001908561427,x:234.6874999884861,score:0.26416015625,name:"left_elbow"},
{y:270.6250190856853,x:254.06249998835656,score:0.278076171875,name:"right_elbow"},
{y:246.09376908584932,x:289.06249998812257,score:0.1997070610523224,name:"left_wrist"},
{y:238.43750001241418,x:300.62499998804526,score:0.50927734375,name:"right_wrist"},
{y:321.5624618648858,x:218.59376906208004,score:0.58154296875,name:"left_hip"},
{y:323.43750001184594,x:224.06249998855716,score:0.5615234375,name:"right_hip"},
{y:453.43750001097675,x:217.34376906208837,score:0.6103515625,name:"left_knee"},
{y:455.6250000109622,x:214.06249998862396,score:0.51416015625,name:"right_knee"},
{y:572.5000000101808,x:215.31249998861563,score:0.403564453125,name:"left_ankle"},
{y:593.1250000100429,x:216.0937499886104,score:0.52294921875,name:"right_ankle"}];
//新建比较器,比较
const AiSport = requirePlugin("aiSport");
const poseComparer = new AiSport.calc.PoseComparer();
const result = poseComparer.compare(sample, frame);
console.log(result);
//输出结果
//{items:
// [{key:"head",score:0.4327263684686711,summary:"头部偏转相似度"},
// {key:"trunk",score:0.8407704975917485,summary:"躯干形态相似度"},
// {key:"left_hand",score:0.2155245751055277,summary:"左手相似度"},
// {key:"right_hand",score:0.21361728579451628,summary:"左手相似度"},
// {key:"left_foot",score:0.5147016736506456,summary:"左脚相似度"},
// {key:"right_foot",score:0.5190758118853293,summary:"右脚相似度"}],
// score:0.5110266728697409
//}
三、在组合运动中的应用
有的运动不只一个动作,比如开合跳,可以拆解成开、合两个动作,分别取样本帧,进行比较即可;如果是局部脚体动作,可以不取整体评分,可以取指定肢体相似度值进行比较。
【一步步开发AI运动小程序】十、姿态动作相似度比较的更多相关文章
- 开发一个微信小程序教程
一.注册小程序账号 1.进入微信公众平台(https://mp.weixin.qq.com/),注册小程序账号,根据提示填写对应的信息即可. 2.注册成功后进入首页,在 小程序发布流程->小程序 ...
- 开发一个微信小程序项目教程
一.注册小程序账号 1.进入微信公众平台(https://mp.weixin.qq.com/),注册小程序账号,根据提示填写对应的信息即可.2.注册成功后进入首页,在 小程序发布流程->小程序开 ...
- 如何快速地开发一个微信小程序
如何快速地开发一个微信小程序呢?我觉得作为初学者,最好能有一个模板,然后改这个模板. 同样作为初学者,刚开始的时候我有下面的几个问题,后来通过问同学,我弄清楚了. 微信小程序可以连接MySQL或者Sq ...
- Java可视化日历(Date类、DATe Format类、Calendar类综合运用),开发可视化日历小程序
Java时间日期类综合运用,开发可视化日历小程序 由键盘输入指定格式的日期,打印这个月的日历 1.代码 import java.text.DateFormat; import java.text.Pa ...
- 全栈开发工程师微信小程序-中(下)
全栈开发工程师微信小程序-中(下) 微信小程序视图层 wxml用于描述页面的结构,wxss用于描述页面的样式,组件用于视图的基本组成单元. // 绑定数据 index.wxml <view> ...
- 全栈开发工程师微信小程序-中(中)
全栈开发工程师微信小程序-中(中) 开放能力 open-data 用于展示微信开放的数据 type 开放数据类型 open-gid 当 type="groupName" 时生效, ...
- 全栈开发工程师微信小程序-中
全栈开发工程师微信小程序-中 多媒体及其他的组件 navigator 页面链接 target 在哪个目标上发生跳转,默认当前小程序,可选值self/miniProgram url 当前小程序内的跳转链 ...
- 全栈开发工程师微信小程序-上(下)
全栈开发工程师微信小程序-上(下) icon 图标 success, success_no_circle, info, warn, waiting, cancel, download, search, ...
- 全栈开发工程师微信小程序-上(中)
全栈开发工程师微信小程序-上(中) width: 750rpx; 750rpx代表与屏幕等宽,rpx的缩写responsive pixel,这个单位是可以根据屏幕大小进行自适应调整的像素单位. 小程序 ...
- 全栈开发工程师微信小程序 - 上
全栈开发工程师微信小程序-上 实现swiper组件 swiper 滑块视图容器. indicator-dots 是否显示面板指示点 false indicator-color 指示点颜色 indica ...
随机推荐
- 自己动手从零写桌面操作系统GrapeOS系列教程——23.从硬盘读取文件
学习操作系统原理最好的方法是自己写一个简单的操作系统. 本讲代码文件为boot.asm,要读取的文件为data.txt. 一.在FAT16系统中读取文件的流程 在GrapeOS中用到的文件少且小,所有 ...
- 支付回调MQ消息的幂等处理及MD5字符串es中的使用及支付宝预授权完成
支付回调MQ消息的幂等处理及MD5字符串es中的使用及支付宝预授权完成 1.幂等的处理,根据对象的转json 转md5作为key,退款的处理 控制发送端?业务上比较难控制.支付异步通知,退款有同步通知 ...
- JsonCpp JSON格式处理库的介绍和使用(面向业务编程-文件格式处理)
JsonCpp JSON格式处理库的介绍和使用(面向业务编程-文件格式处理) 介绍 JSON是一种轻量级的数据交换格式,它是一种键值对的集合.它的值可以是数字.字符串.布尔值.序列. 想知道更多有关J ...
- 京东获得店铺的所有商品API接口(item_search_shop-获得店铺的所有商品)
京东获得店铺的所有商品API接口(item_search_shop-获得店铺的所有商品)接口展示说明及教程: 公共参数 名称 类型 必须 描述key String 是 调用key(必须以GET方式拼接 ...
- kubernetes(k8s)中部署dashboard可视化面板
Web 界面 (Dashboard) Dashboard 是基于网页的 Kubernetes 用户界面.你可以使用 Dashboard 将容器应用部署到 Kubernetes 集群中,也可以对容器应用 ...
- [ElasticSearch]常用URL路径
https://127.0.0.1:9200/ http://127.0.0.1:9200/_all?pretty https://127.0.0.1:9200/_cluster/health?pre ...
- 逍遥自在学C语言 | 位运算符的基础用法
前言 一.人物简介 第一位闪亮登场,有请今后会一直教我们C语言的老师 -- 自在. 第二位上场的是和我们一起学习的小白程序猿 -- 逍遥. 二.构成和表达方式 位运算符是一组用于在二进制数之间进行操作 ...
- 还原win10任务管理器的内存dump功能之——程序逆向分析(待完成)
逆向分析工作基本完成,笔记待完成.
- vue侦听器(引入vue.js写法)
首先在html中引入vue.js,具体怎么下载可以参考https://blog.csdn.net/lvoelife/article/details/129254906,下载后在html中引入: 侦听d ...
- 使用扩展函数方式,在Winform界面中快捷的绑定树形列表TreeList控件和TreeListLookUpEdit控件
在一些字典绑定中,往往为了方便展示详细数据,需要把一些结构树展现在树列表TreeList控件中或者下拉列表的树形控件TreeListLookUpEdit控件中,为了快速的处理数据的绑定操作,比较每次使 ...