【一步步开发AI运动小程序】十三、自定义一个运动分析器,实现计时计数02
随着人工智能技术的不断发展,阿里体育等IT大厂,推出的“乐动力”、“天天跳绳”AI运动APP,让云上运动会、线上运动会、健身打卡、AI体育指导等概念空前火热。那么,能否将这些在APP成功应用的场景搬上小程序,分享这些概念的红利呢?本系列文章就带您一步一步从零开始开发一个AI运动小程序,本系列文章将使用“云智AI运动识别小程序插件”,请先行在微信服务市场或官网了解详情。
一、运动分析
如图所示,俯卧撑
有卧和撑两个动作姿态组成,从卧到撑或者撑到卧,为一个动作,即计数加1;因此我们分别构建这两个姿态的识别规则,查测到卧撑
或撑卧
的组合计数加1,便可以完成俯卧撑
的检测数。
二、检测规则构建
【撑】:
如上图所示的动作1“撑”姿态,我们看到整个身体躯干绷直,双手绷直撑起,手臂与腰部夹角大约80度左右,所以我们构建出以下几个检测规则进行检测:
{
name: '撑状态检查',
calc: '$and',
rules: [{
name: '手臂垂直撑起',
calc: '$or',
rules: [{
name: '左手臂垂直',
calc: 'vertical',
upperKey: 'left_shoulder',
centerKey: 'left_elbow',
lowerKey: 'left_wrist',
offset: 20
}, {
name: '右手臂垂直',
calc: 'vertical',
upperKey: 'right_shoulder',
centerKey: 'right_elbow',
lowerKey: 'right_wrist',
offset: 20
}]
}, {
name: '手臂与腰部垂直',
calc: '$or',
rules: [{
name: '左手臂与腰齐垂直',
calc: 'match-angle',
angleKey: 'left_shoulder',
secondKey: 'left_elbow',
thirdKey: 'left_hip',
angle: 90,
offset: 25
}, {
name: '右手臂与腰齐垂直',
calc: 'match-angle',
angleKey: 'right_shoulder',
secondKey: 'right_elbow',
thirdKey: 'right_hip',
angle: 90,
offset: 25
}]
}, {
name: '腿部绷直',
calc: '$or',
rules: [{
name: '左腿绷直',
calc: 'match-angle',
angleKey: 'left_knee',
secondKey: 'left_ankle',
thirdKey: 'left_hip',
angle: 160,
offset: 20
}, {
name: '右腿绷直',
calc: 'match-angle',
angleKey: 'right_knee',
secondKey: 'right_ankle',
thirdKey: 'rgight_hip',
angle: 160,
offset: 20
}]
}]
};
【卧】:
接下来我们继续看第二个分解动作卧,如上图所示的动作2“卧”姿态,我们看到整个身体躯干也是绷直的,手臂弯曲成约90度,胳膊与腰部齐平,所以我们构建出以下检测规则进行识别:
{
name: '卧动作检查',
calc: '$and',
rules: [{
name: '躯干卧倒状态',
calc: 'lie',
offset: 30
}, {
name: '手臂弯曲检查',
calc: '$or',
rules: [{
name: '左手臂弯曲状态',
calc: 'match-angle',
angleKey: 'left_elbow',
secondKey: 'left_shoulder',
thirdKey: 'left_wrist',
angle: 115,
offset: 15
}, {
name: '右手臂弯曲状态',
calc: 'match-angle',
angleKey: 'right_elbow',
secondKey: 'right_shoulder',
thirdKey: 'right_wrist',
angle: 115,
offset: 15
}]
}, {
name: '手臂与腰齐平查',
calc: '$or',
rules: [{
name: '左手臂与腰齐平查',
calc: 'match-angle',
angleKey: 'left_shoulder',
secondKey: 'left_elbow',
thirdKey: 'left_hip',
angle: 35,
offset: 15
}, {
name: '右手臂与腰齐平查',
calc: 'match-angle',
angleKey: 'right_shoulder',
secondKey: 'right_elbow',
thirdKey: 'right_hip',
angle: 35,
offset: 15
}]
}]
}
到这,我们就把运动检测规则编写好了,规则同时考虑了左、右侧入镜的问题。
三、执行检测
实现运动分析器,我们需要继承扩展sports.SportBase
抽象类,该类已经为您实现了基本的计时、计数能力,您只要重写pushing
方法,在此方法调用calc.Calculator
计算器进行规则计算,通过则调用计时计数即可,代码如下:
pushing(body) {
if (utils.isNone(body))
return;
//卧
if (this._calculator.calculating(body, this.rules.liePose)) {
this.stateTran = 1;
return;
}
//撑
if (!this._calculator.calculating(body, this.rules.upPose) || this.stateTran !== 1)
return;
this.stateTran = -1;
this.countTimes();
this.emitTick(); //触发计数
}
四、后计
以上便是俯卧撑
运动的分析器的适配过程,当然还可以使用姿态相似度
能力进行动作识别,效率相对会更高些,详情请参考前面的相似度使用章节及API文档。
【一步步开发AI运动小程序】十三、自定义一个运动分析器,实现计时计数02的更多相关文章
- 微信小程序开发详解——小程序,大颠覆!
微信小程序开发 联系 苏念 188.1414.7927 微信小程序系统开发 微信新功能开发 小程序开发 小程序怎么开发 app小程序开发 简化小程序开发 微信小程序定制 小程序制作 开发微信小程序 ...
- 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 ...
- 《OD学微信开发》微信小程序入门示例
官网地址: https://mp.weixin.qq.com/debug/wxadoc/dev/ 一.文件结构 小程序包含一个描述整体程序的 app 和多个描述各自页面的 page. .js后缀的是脚 ...
- 有哪些适合个人开发的微信小程序
微信小程序提供了一个简单.高效的应用开发框架和丰富的组件及API,帮助开发者在微信中开发具有原生 APP 体验的服务. 微信小程序支持采用云开发模式,无需后台服务,十分的方便快捷,适合个人开发一些工具 ...
随机推荐
- Spring:基于注解管理bean
标记与扫描 注解 和 XML 配置文件一样,注解本身并不能执行,注解本身仅仅只是做一个标记,具体的功能是框架检测 到注解标记的位置,然后针对这个位置按照注解标记的功能来执行具体操作. 本质上:所有一切 ...
- 开源项目管理工具 Plane 安装和使用教程
说到项目管理工具,很多人脑海中第一个蹦出来的可能就是 Jira 了.没错,Jira 确实很强大,但是...它也有点太强大了,既复杂又昂贵,而且目前也不再提供私有化部署版本了. 再说说飞书,作为国产之光 ...
- 如何排查线上w3wp.exe CPU高的问题,使用到了WinDbg、Visual studio来分析IIS进程池的.dmp文件
最近发现服务器上某个web站点老是CPU很高,该站点部署在IIS上,我IIS上有多个站点,每个站点一个进程池,每个进程池取名都是根据站点来取的,所以很容易看出哪个站点吃掉的CPU,该站点已运行十几年, ...
- nftables
RHEL 8 用 ntftable 替换 iptables, 新安装的 CentOS 8.3 是这样的: [root@net182-host113 ~]# nft list tablestable i ...
- docker with GPU support
自己总结的: nvidia-docker, 不支持windows,2019.10, nvidia-docker过时了,从docker 1903开始,安装一个nvidia-container-runti ...
- 变“金点子”为“好应用”,合合信息智能文档处理技术助力大学生探索AI创新边界
谈"糖"色变.追求养生.低卡生活--这些热门词汇频频在社交媒体上掀起讨论热潮.有这样一批年轻人不但捕捉到了这些词汇背后真实的用户需求,并且正在利用AI技术寻找解决之道. 近日,&q ...
- Angular 学习笔记 (消毒 sanitizer)
refer : https://www.intricatecloud.io/2019/10/using-angular-innerhtml-to-display-user-generated-cont ...
- 一个 tomcat 下如何部署多个项目?附详细步骤
一个tomcat下如何部署多个项目?Linux跟windows系统下的步骤都差不多,以下linux系统下部署为例.windows系统下部署同理. 一.不修改端口,部署多个项目 清楚tomcat目录结构 ...
- SpringMVC —— REST风格简介
REST风格简介 REST(Representational State Transfer),表现形式转换 传统风格资源描述形式 REST风格描述形式 优点 隐藏资源的访问行为,无法通过地址得知对资源 ...
- Java发展到现在,哪些技术可以放弃了?
各位好啊,我是会编程的蜗牛,作为java开发者,对于各类java开发技术.开发框架肯定是多少都要了解和知道的. 但是作为已经发展了几十年的java开发生态,各类技术层出不穷,有的新技术新框架已经对旧技 ...