当前位置: 首页 > news >正文

【一步步开发AI运动APP】十二、如何进行运动开始前的站位预检,提升用户体验

之前我们为您分享了【一步步开发AI运动小程序】开发系列博文,通过该系列博文,很多开发者开发出了很多精美的AI健身、线上运动赛事、AI学生体测、美体、康复锻炼等应用场景的AI运动小程序;为了帮助开发者继续深耕AI运动领域市场,今天开始我们将为您分享新系列【一步步开发AI运动APP】的博文,带您开发性能更强、体验更好的AI运动APP。

本篇将为您介绍,如何实现正式运动检测前的远、近,视角预检、语音提示等典型应用场景。

一、为什么要进行站位预检

在运动检测时,用户无法手持和操作手机(或者是固定的终端设备),所以在放置好手机后,有必要进行人体远近、视角的预检查,这样的预检查一是有助手提升用户初次使用时的体验,在首次使用时不至于茫然不知道如何使用。二是有助于提升运动检测通过率,合适的距离、正确的视角是影响运动检测通过率两大关键因素,用户在运动开始前站位好距离、视角能极大的提高检测通过率,获得最佳的运动检测体验。
实现以上的预检查,需要使用到插件的pose-calc自定义姿态识别,可以参考本系的前面章节或插件的pose-calc文档了解pose-calc的使用。

二、如何进行站位远近检测

如下图所示,人距离设备过远或过近会影响取像中的人体范围,太远了人物太小关键点不清晰、太近了人无法全身入镜无法识别完整姿态,这都将影响运动的检测识别,我们建议识别范围为人居中占整个图像60%-85%之间为最佳。
115969-20231225113955126-1381086794

要判断人站位的远、近,我们可以使用Pose-Calc中的Whole检查规则来进行判断,代码如下:

import { createCalculator } from "@/uni_modules/yz-ai-sport";
const calculator = createCalculator();//human受检人体姿态,调用抽帧、人体检测接口,得到实时人体结构function farNearChcking(human){let range = 0.85;let rule = {name: '人太近检查',calc: 'whole',range: {top: human.height * (1 - range) / 2,left: human.width * (1 - range) / 2,width: human.width * range,height: human.height * range},relaxed: true};let pass = calculator.calculating(human, rule);if(!pass){console.log('您离相机太近了,请远离');return false;//进行UI显示,比如检测范围框闪动//建议进一步进行语音播放提醒}range = 0.65;rule = {name: '人太远检查',calc: 'whole',range: {top: human.height * (1 - range) / 2,left: human.width * (1 - range) / 2,width: human.width * range,height: human.height * range},relaxed: true};pass = calculator.calculating(human, rule);if(pass){console.log('您离相机太远了,请靠近些');return false;//进行UI显示,比如检测范围框闪动//建议进一步进行语音播放提醒}return true;
}

四、如何进行视角检查

为了保证能尽量完整的识别到运动姿态,不同的运动定义了不能的检查视角(可以通过运动分析器的实例的view属性获得),在定义的视角下进行相应的运动检测,检测效果为最佳,如下图所示:
115969-20231228094751751-1163443615
115969-20231228094757173-31707001
pose-calc提供了camera-view检测规则,专门用来检测站位视角,应用代码如下:


import { createCalculator } from "@/uni_modules/yz-ai-sport";
const calculator = createCalculator();//human受检人体姿态,调用抽帧、人体检测接口,得到实时人体结构function cameraViewChecking(human, view){let backOrFrontRule = {name: '前后视角预检查',calc: '$or',ruels: [{name: '正对摄像头检查',calc: 'camera-view',position: 'front'},{name: '背对摄像头检查',calc: 'camera-view',position: 'back'}]};let sideRule = {name: '侧身视角预检查',calc: '$or',ruels: [{name: '左对摄像头检查',calc: 'camera-view',position: 'left'},{name: '右对摄像头检查',calc: 'camera-view',position: 'right'}]};let pass = false;let msg = null;switch(view){case 'back_front':msg = '请背对或正对手机';pass = calculator.calculating(human, rule)break;case 'side':msg = '请背侧身对手机';pass = calculator.calculating(human, rule)break;//还进行更多的独立视角检查}if(!pass){console.log(msg);//进行UI显示,比如检测范围框闪动//建议进一步进行语音播放提醒}return pass;
}

五、预检完成后的过渡

为了让用户有一个缓冲反应时间,建议在所有预检查通过后,进行3-5秒的倒计时并请进行语音播报,再开始运动识别检查,让用户有充分的准备时间,以免让用措手不及。

好了,本篇就为您介绍到这,敬请继续关注更多典型场景实现

http://www.zskr.cn/news/31288.html

相关文章:

  • 2025年10月品牌认证机构推荐:权威榜单对比五强优劣
  • 解析 MySQL 与 KingbaseES 字符串排序规则差异
  • 2025 年最新推荐 PPT 生成软件排行榜:权威协会测评 + AI 备案技术加持,3500 万用户信赖之选全面解析
  • 数据结构——LinkedList和链表 - 实践
  • 10 25
  • 2025 年青岛点焊机厂家最新推荐榜,聚焦技术实力与市场口碑深度解析螺母/自动/螺栓/储能/汽车零部件点焊机厂家推荐
  • 日记14
  • 三年级小学生日记范文
  • easy-query暴打efcore(包括其他所有orm),隐式Group看我如何在子查询做到极致的性能天花板
  • 完整教程:深入理解-自然拼读(英语)
  • 能在0.02秒内找到最优解的华容道程序
  • Sparkle签名检查绕过漏洞分析
  • dataGridView 控件表格颜色交替设置
  • 2025年10月洗地机产品推荐榜:价格与性能全面对比
  • 读AI赋能11自由认知
  • SAM2 图像分割(3)鼠标选择多框 摄像头实时分割显示 - MKT
  • Semantic-SSAM 是“一切多细都行,还能给标签”​​ - MKT
  • P1679 神奇的四次方数
  • 20232419 2025-2026-1 《网络与系统攻防技术》实验三实验报告
  • 详细介绍:分布式任务事务框架设计与实现方案
  • 事件日志查看Windows安装软件情况
  • 凭借Ubuntu和i.MX 6ULL开发板构建网络共享
  • 【CI130x 离在线】FreeRTOS的流缓冲(StreamBuffer)
  • 循环
  • RT-Thread Nano源码浅析
  • 关于SQLite - 世界上装机量最多的数据库
  • 第六章习题
  • 概率论测试
  • 2025/10/26
  • 大学生为什么要认真听课