【一步步开发AI运动小程序】五、帧图像人体识别
随着人工智能技术的不断发展,阿里体育等IT大厂,推出的“乐动力”、“天天跳绳”AI运动APP,让云上运动会、线上运动会、健身打卡、AI体育指导等概念空前火热。那么,能否将这些在APP成功应用的场景搬上小程序,分享这些概念的红利呢?本系列文章就带您一步一步从零开始开发一个AI运动小程序,本系列文章将使用“云智AI运动识别小程序插件”,请先行在微信服务市场或官网了解详情。
一、初始化人体识别功能
人体识别能力调用前需要初始化(可多次初始化),插件的具有双人体识别引擎,默认不指定引擎将自动选择最优引擎,也可指定引擎,识别引擎的差别请参考集成文档。
const that = this;
humanDetection.initialize({
//ve: 2,
callback(err) {
uni.hideLoading();
if (!err) {
console.log('人体检测能力初始化成功。', humanDetection.getVe());
return;
}
uni.showModal({
content: `初始化失败,详细信息:${err.message}`,
showCancel: false
});
}
});
二、调用人体识别功能
//接上篇抽帧
const context = wx.createCameraContext();
const listener = context.onCameraFrame((frame) => {
//frame.data图像数组将用于后续的人体识别
const image = {
width: Number(frame.width),
height: Number(frame.height),
data: new Uint8Array(frame.data)
};
humanDetection.detectionAsync(image).then(human=>{
console.log(human);
});
});
listener.start();
三、人体识别结果
{
"score": 0.7251838252824896,
"width": 480,
"height": 640,
"timestamp": 1684325583506,
"keypoints": [
{
"y": 103.56424502483996,
"x": 256.0109768927012,
"score": 0.4570312798023224,
"name": "nose"
},
{
"y": 90.71574411931093,
"x": 270.50707531981544,
"score": 0.58251953125,
"name": "left_eye"
},
{
"y": 90.09307140499885,
"x": 244.60145098668588,
"score": 0.552734375,
"name": "right_eye"
},
{
"y": 95.37442872749463,
"x": 286.88540601464354,
"score": 0.75244140625,
"name": "left_ear"
},
{
"y": 93.90985185987653,
"x": 231.85045311881774,
"score": 0.7392578125,
"name": "right_ear"
},
{
"y": 162.78484030178413,
"x": 311.0556351088547,
"score": 0.919921875,
"name": "left_shoulder"
},
{
"y": 161.2381417518693,
"x": 203.38841526521654,
"score": 0.77197265625,
"name": "right_shoulder"
},
{
"y": 240.78316880186404,
"x": 310.24842737472574,
"score": 0.84912109375,
"name": "left_elbow"
},
{
"y": 242.12329664294745,
"x": 201.77353663841666,
"score": 0.833984375,
"name": "right_elbow"
},
{
"y": 281.9979693520591,
"x": 352.673287407275,
"score": 0.59765625,
"name": "left_wrist"
},
{
"y": 286.2878520237733,
"x": 173.8384814716242,
"score": 0.63427734375,
"name": "right_wrist"
},
{
"y": 307.2371714929637,
"x": 273.4654390815558,
"score": 0.82177734375,
"name": "left_hip"
},
{
"y": 305.7596342955926,
"x": 222.0470940485152,
"score": 0.84912109375,
"name": "right_hip"
},
{
"y": 417.72422545441424,
"x": 267.0201893540119,
"score": 0.6103515625,
"name": "left_knee"
},
{
"y": 414.7774591985668,
"x": 204.46947287192143,
"score": 0.8701171875,
"name": "right_knee"
},
{
"y": 481.8868752974563,
"x": 280.1792094531294,
"score": 0.74072265625,
"name": "left_ankle"
},
{
"y": 467.38751675509405,
"x": 247.29222232381437,
"score": 0.7451171875,
"name": "right_ankle"
}
],
"bodyRange": {
"x": 173.8384814716242,
"y": 90.09307140499885,
"width": 178.8348059356508,
"height": 391.79380389245745
}
}
四、识别结果旋转矫正
获得人体识别结果后,可以调用rotate()进行整体旋转,也可以调用rotateToUpright()自动旋转直立图,进行横、竖屏适配。
下一篇将为您介绍人体骨骼图绘制...
【一步步开发AI运动小程序】五、帧图像人体识别的更多相关文章
- Java可视化日历(Date类、DATe Format类、Calendar类综合运用),开发可视化日历小程序
Java时间日期类综合运用,开发可视化日历小程序 由键盘输入指定格式的日期,打印这个月的日历 1.代码 import java.text.DateFormat; import java.text.Pa ...
- 开发一个微信小程序教程
一.注册小程序账号 1.进入微信公众平台(https://mp.weixin.qq.com/),注册小程序账号,根据提示填写对应的信息即可. 2.注册成功后进入首页,在 小程序发布流程->小程序 ...
- 开发一个微信小程序项目教程
一.注册小程序账号 1.进入微信公众平台(https://mp.weixin.qq.com/),注册小程序账号,根据提示填写对应的信息即可.2.注册成功后进入首页,在 小程序发布流程->小程序开 ...
- 如何快速地开发一个微信小程序
如何快速地开发一个微信小程序呢?我觉得作为初学者,最好能有一个模板,然后改这个模板. 同样作为初学者,刚开始的时候我有下面的几个问题,后来通过问同学,我弄清楚了. 微信小程序可以连接MySQL或者Sq ...
- 全栈开发工程师微信小程序-中(下)
全栈开发工程师微信小程序-中(下) 微信小程序视图层 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 ...
随机推荐
- Win11减少C盘占用及清爽系统配置教程
Win11减少C盘占用及清爽系统配置教程 你是否有过C盘爆满而不得不重装系统的经历?你是否有过因为C盘爆满而不得不不断的拓展空间的无奈?你是否有过已经将软件安装在D盘但C盘的空间还是在日益变满的痛苦? ...
- 偶发的系统卡顿内存飙升导致OOM
线上有个小程序,客户反馈的现象是偶发性的卡主没响应,前端失去连接,点其他菜单都没响应.通过查看配置的dump目录有很多的GC日志,以及生成的一个堆内存快照. JVM的配置参数大概为: -Xms512M ...
- Android Adapter中组件EditText文本变化监听 addTextChangedListener
问题背景:使用适配器显示一个列表,列表中Item中有EditText,滚动时会有EditText组件内容消失 步骤: 1. 在Adapter中,添加interface public interface ...
- 【YashanDB知识库】ODBC驱动类问题定位方法
[标题]ODBC驱动类问题定位方法 [需求分类]故障分析 [关键字]ODBC [需求描述]由于我们的ODBC接口目前尚不完善,经常会遇见ODBC接口能力不足导致应用功能无法运行的问题,需要定位手段确定 ...
- C#自定义控件—指示灯
C#用户控件之指示灯 在体现通讯状态.运行状态等用一个靓眼的指示灯如何做? 思路(GDI) 外环用笔绘制(Pen),内圆用画刷(SolidBrush); 两个方法(用笔画圆,用画刷填充圆的内部): 绘 ...
- OData – 大杂烩
前言 本篇记入一些 OData 的小东西. Query string too long OData 使用 GET 请求,然后搭配 query string $filter, $select, $exp ...
- 2019牛客暑期多校训练营(第四场)J-free(分层图最短路)
>传送门< 题意:给你n个城市,m条道路,经过每一条要花费这条路的代价,现给你k个机会,使得最多k条路的代价为0,问从起点s到终点t花费的最少代价 思路:分层图最短路经典裸题 方法一 Co ...
- 十七,Spring Boot 整合 MyBatis 的详细步骤(两种方式)
十七,Spring Boot 整合 MyBatis 的详细步骤(两种方式) @ 目录 十七,Spring Boot 整合 MyBatis 的详细步骤(两种方式) 1. Spring Boot 配置 M ...
- [TK] HH的项链 离线树状数组解法
实际上这题很难和树状数组联系起来,我感觉效率也不是很高,感觉不是正解 怎么使用树状数组 这道题我们很容易想到一点:同种物品在一个区间内只能出现一次,先不考虑别的问题,我们想出下面这种使用树状数组的思路 ...
- 《Vue.js 设计与实现》读书笔记 - 第8章、挂载与更新
第8章.挂载与更新 8.1 挂载子节点和元素的属性 扩展子元素的类型可以为数组,并判断如果是数组的话,就先依次挂载所有的子元素. 同时新增节点属性.属性可以通过 el.setAttribute 添加到 ...