【云智AI运动识别小程序插件】,可以为您的小程序,赋于人体检测识别、运动检测识别、姿态识别检测AI能力。本地原生识别引擎,无需依赖任何后台或第三方服务,有着识别速度快、体验佳、扩展性强、集成快、成本低的特点,本篇实现需要使用此插件,请先行在微信服务市场或官网了解详情。

一、为什么要判断人体与摄像头的远近?

在进行运动和姿态识别时,离摄像头太近,则无法取得全身关键点;若离摄像头太远,则人体图像太小,关键点将混成一团,识别效果太差,如下图所示:

基于此,就非常有必要在正式开始运动前,对人体站位进行预检,再通过语音等方式提醒用户调整站位至合适距离,以便获得最佳体验和识别效果,我们建议将人体控制在帧图像的55%-85%之间。

二、whole检测规则

whole是插件姿态计算引擎body-calc提供检测整个人体是否全部位于帧图像(或指定的范围)内,我们可以利用此规则进行人体远近的检测,如果人体只有部分在帧图像的85%范围内(whole执行结果为false)则表示站得太近了;如果人体全部在帧图像的55%范围内(whole执行结果为true)则表示离得太远了。

三、离摄像头太判断

在进行远近判断前,请查阅本系列博文了解抽帧、人体识别、body-calc应用等内容。

const AiSport = requirePlugin("aiSport");
const humanDetection = AiSport.humanDetection;
const Calculator = AiSport.calc.Calculator; const RANGE = 0.85; //人体必须在帧图像中间85%区域内
const rule = {
name: '人体太近检查',
calc: 'whole',
range: {
top: 0,
left: 0,
width: 0,
height: 0
},
relaxed: true
};
const calculator = new Calculator(); //抽帧
const context = wx.createCameraContext();
const listener = context.onCameraFrame((frame) => {
const iamge = {
width: Number(frame.width),
height: Number(frame.height),
rawData: frame.data
}; rule.range.top = frame.height * (1 - RANGE) / 2;
rule.range.left = frame.width * (1 - RANGE) / 2;
rule.range.height = frame.height * RANGE;
rule.range.width = frame.width * RANGE; //人体识别
humanDetection.detectionAsync(image).then(human=>{ //执行检测
if(!calculator.calculating(human, rule)){
console.log('站得太近了,请远离');
//播放语音、UI提示...
return;
} //通过,则进入运动检测等应用环节..
});
});
listener.start();

四、离摄像头太判断

const AiSport = requirePlugin("aiSport");
const humanDetection = AiSport.humanDetection;
const Calculator = AiSport.calc.Calculator; const RANGE = 0.55; //人体必须在帧图像中间55%区域以外
const rule = {
name: '人体远离检查',
calc: 'whole',
range: {
top: 0,
left: 0,
width: 0,
height: 0
},
relaxed: true
};
const calculator = new Calculator(); //抽帧
const context = wx.createCameraContext();
const listener = context.onCameraFrame((frame) => {
const iamge = {
width: Number(frame.width),
height: Number(frame.height),
rawData: frame.data
}; rule.range.top = frame.height * (1 - RANGE) / 2;
rule.range.left = frame.width * (1 - RANGE) / 2;
rule.range.height = frame.height * RANGE;
rule.range.width = frame.width * RANGE; //人体识别
humanDetection.detectionAsync(image).then(human=>{ //执行检测
if(calculator.calculating(human, rule)){
console.log('站得太远了,请近些');
//播放语音、UI提示...
return;
} //通过,则进入运动检测等应用环节..
});
});
listener.start();

好了,远近检测就为您介绍到这,下篇将带您进行站力视角检查,敬请期待...

【一步步开发AI运动小程序】十五、AI运动识别中,如何判断人体站位的远近?的更多相关文章

  1. 开发一个微信小程序教程

    一.注册小程序账号 1.进入微信公众平台(https://mp.weixin.qq.com/),注册小程序账号,根据提示填写对应的信息即可. 2.注册成功后进入首页,在 小程序发布流程->小程序 ...

  2. 开发一个微信小程序项目教程

    一.注册小程序账号 1.进入微信公众平台(https://mp.weixin.qq.com/),注册小程序账号,根据提示填写对应的信息即可.2.注册成功后进入首页,在 小程序发布流程->小程序开 ...

  3. 如何快速地开发一个微信小程序

    如何快速地开发一个微信小程序呢?我觉得作为初学者,最好能有一个模板,然后改这个模板. 同样作为初学者,刚开始的时候我有下面的几个问题,后来通过问同学,我弄清楚了. 微信小程序可以连接MySQL或者Sq ...

  4. Java可视化日历(Date类、DATe Format类、Calendar类综合运用),开发可视化日历小程序

    Java时间日期类综合运用,开发可视化日历小程序 由键盘输入指定格式的日期,打印这个月的日历 1.代码 import java.text.DateFormat; import java.text.Pa ...

  5. 全栈开发工程师微信小程序-中(下)

    全栈开发工程师微信小程序-中(下) 微信小程序视图层 wxml用于描述页面的结构,wxss用于描述页面的样式,组件用于视图的基本组成单元. // 绑定数据 index.wxml <view> ...

  6. 全栈开发工程师微信小程序-中(中)

    全栈开发工程师微信小程序-中(中) 开放能力 open-data 用于展示微信开放的数据 type 开放数据类型 open-gid 当 type="groupName" 时生效, ...

  7. 全栈开发工程师微信小程序-中

    全栈开发工程师微信小程序-中 多媒体及其他的组件 navigator 页面链接 target 在哪个目标上发生跳转,默认当前小程序,可选值self/miniProgram url 当前小程序内的跳转链 ...

  8. 全栈开发工程师微信小程序-上(下)

    全栈开发工程师微信小程序-上(下) icon 图标 success, success_no_circle, info, warn, waiting, cancel, download, search, ...

  9. 全栈开发工程师微信小程序-上(中)

    全栈开发工程师微信小程序-上(中) width: 750rpx; 750rpx代表与屏幕等宽,rpx的缩写responsive pixel,这个单位是可以根据屏幕大小进行自适应调整的像素单位. 小程序 ...

  10. 全栈开发工程师微信小程序 - 上

    全栈开发工程师微信小程序-上 实现swiper组件 swiper 滑块视图容器. indicator-dots 是否显示面板指示点 false indicator-color 指示点颜色 indica ...

随机推荐

  1. Windows C 盘瘦身

    修改 Window 服务器虚拟内存位置 | 博客园 怎么更改电脑默认储存位置呢?| CSDN Win11 磁盘清理怎么没有了?Win11 磁盘清理在哪打开?| 搜狐网 快速清理 Windows 大文件 ...

  2. uni-app之camera组件-人脸拍摄

    小程序录制视频:10-30秒:需要拍摄人脸,大声朗读数字(123456)这种. 1.camera组件 camera页面内嵌的区域相机组件.注意这不是点击后全屏打开的相机 camera只支持小程序使用: ...

  3. 2023/11/15 NOIP 模拟赛

    T1 游戏 标签 尺取 线段树 单调队列 线段树进阶 思路 抽象题意,相当于有 \(t\) 个点,有 \(n\) 个下接 \(x\) 轴的矩形. 首先明显可以按照 \(c\) 排序,然后尺取. 写法 ...

  4. 全面掌握 Jest:从零开始的测试指南(上篇)

    随着JavaScript在前后端开发中的广泛应用,测试已成为保证代码质量的关键环节. 为什么需要单元测试 在我们的开发过程中,经常需要定义一些算法函数,例如将接口返回的数据转换成UI组件所需的格式.为 ...

  5. 多线程ExecutorService 的理解与使用

    原文链接:https://www.cnblogs.com/gxz-sw/p/6754476.html 接口 Java.util.concurrent.ExecutorService 表述了异步执行的机 ...

  6. 音视频入门-5-音频编码原理、编码器、ADTS格式

    1.  概念 音频压缩技术指的是对原始数字音频信号流(PCM编码)运用的数字信号处理技术. 2. 背景 和 压缩的必要性 研究发现,直接采用PCM码流进行存储和传输存在非常大的冗余度. 以CD为例,其 ...

  7. 一,初始 MyBatis-Plus

    一,初始 MyBatis-Plus @ 目录 一,初始 MyBatis-Plus 1. MyBatis-Plus 的概述 2. 入门配置第一个 MyBatis-Plus 案例 3. 补充说明: 3.1 ...

  8. 浏览器中生成 OSS 令牌 | Web Crypto API

    笔者写文章的时候,都会把图片通过自己搭建的一个简单站点 https://imgbed.sugarat.top/ 把图片上传到各种云的对象存储服务(OSS)上. 然后通过CDN访问,保证图片有可靠的访问 ...

  9. 反射获取Exception的所有类

    var test = "test"; $"{test} 喜喜".Dump(); // 反射 var types = Assembly .GetAssembly( ...

  10. threejs - 渲染第一个3D场景 - 旋转的正方体

    1. 安装 threejs & 使用 2. 创建三要素  场景 scene 相机 camera 渲染器 render 3. 场景 new THREE.Scene() 相机分为 2 种  1. ...