【一步步开发AI运动APP】七、自定义姿态动作识别检测——之规则配置检测

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

一、什么是自定义姿态识别检测

您在开发AI运动小程序或APP时,可能会面这样的需求场景,比如:人像必须全部入镜、站立远近要求检查、用户做某个动作开始/停止运动识别、内置运动不满足场景需求需要扩展新运动项目等等,这些都需要用到自定义姿态动作识别检测,插件提供了基于规则配置姿态相似度比较 两种姿态识别检测方案,本章将先为您介绍基于规则配置 方案,姿态相似度比较 方案和自定义运动扩展 将在后续章节为您介绍。

二、Pose-Calc引擎介绍

插件姿态识别引擎pose-calc(原body-calc)实现了诸如⻆度匹配、垂直、⽔平、逻辑运算、姿态相似度⽐较、姿态旋转等常⽤的⼈体分析计算器;插件的内置运动分析器都基于此计算层实现,通过pose-calc只要配置好计算规则(⽆代码或代少量代码)即可实现自定义姿态动作检测或运动分析,也⽅便实现运动分析可配置化。 姿态计算引擎中的检测规则分为姿态计算逻辑计算 两种类型,姿态计算 类型主要包含全身入镜视角检测相对位置站立卧躺角度匹配等人体姿态计算规则;逻辑计算 包含三个逻辑运算,用于实现姿态计算规则的组合运算,详情可以参考pose-calc指南文档。

三、编写姿态检测规则

姿态计算规则为方便持久化,采用类js匿名类型和JSON对象语法配置,定义语法如下:

javascript 复制代码
let rule = {
	calc: 'stand',  //必填,要调用的计算规则
	name: '保持站立姿态' //必填,自定义规则名称
	... //该计算规则所需的其它参数,具体参考文档
};

四、执行自定义姿态规则检测

定义好计算规则、检测出人体结构后,便可以调用计算规则执行对象Calculator进行检测了,代码如下:

javascript 复制代码
import { createCalculator } from "@/uni_modules/yz-ai-sport";
const calculator = createCalculator();
let rule = {
	name: 'test',
	calc: '$and',
	rules: [{
		name: '正⾯视图',
		calc: 'camera-view',
		position: 'front'
		}, {
		name: '全身需⼊镜',
		calc: 'whole',
		relaxed: true
	}]
};
let human = ... //调用人体检测接口,得到实时人体结构
let pass = calculator.calculating(human, rule);
console.log(pass);
//Calculator还有calculatingAnd、calculatingOr、calculatingNot⽅法供快捷调⽤,详⻅API参考⽂档

五、完整示例

下面以左右手平举姿态检测的示例,为您演示插件的基于计算规则配置的自定义姿态动作检测能力:

javascript 复制代码
import { createCalculator, createHumanDetector } from "@/uni_modules/yz-ai-sport";

let rules={
	name: '基本姿态',
	calc: '$and',
	rules: [{
		name: '全身需入镜',
		calc: 'whole'
	}, {
		name: '站立姿态',
		calc: 'stand'
	}, {
		name: '任一手平直',
		calc: '$or',
		rules: [{
			name: '左平直状态',
			calc: 'match-angle',
			angleKey: 'left_shoulder',
			secondKey: 'left_hip',
			thirdKey: 'left_wrist',
			angle: 90,
			offset: 20
		}, {
			name: '右平直状态',
			calc: 'match-angle',
			angleKey: 'right_shoulder',
			secondKey: 'right_hip',
			thirdKey: 'right_wrist',
			angle: 90,
			offset: 20
		}]
	}]
};

const calculator = createCalculator();
let options = {
	multiple: false,
	enabledGPU: true,
	highPerformance: false
};
const humanDetector = createHumanDetector(options);
humanDetector.startExtractAndDetect({
	onDetected(result){
		let humans = result.humans;
		let pass = calculator.calculating(humans[0], rule);
	}
});
		
相关推荐
Greg_Zhong2 天前
微信小程序如何关闭:当前渲染模式为webview?
微信小程序·微信小程序渲染引擎·渲染引擎需搭配更高基础库
橘子海全栈攻城狮2 天前
【最新源码】养老院系统管理A013
java·spring boot·后端·web安全·微信小程序
计算机学姐2 天前
基于微信小程序的校园失物招领管理系统【uniapp+springboot+vue】
java·vue.js·spring boot·mysql·信息可视化·微信小程序·uni-app
SkyWalking中文站2 天前
用 SkyWalking 监控微信和支付宝小程序
微信·微信小程序·支付宝
计算机学姐2 天前
基于微信小程序的宠物服务系统【uniapp+springboot+vue】
java·vue.js·spring boot·mysql·微信小程序·uni-app·宠物
Greg_Zhong2 天前
微信小程序中实现自定义多选效果(完整实现及问题记录)
微信小程序·自定义多选控件
独角鲸网络安全实验室2 天前
2026微信小程序抓包全解析:从实操落地到合规风控,解锁前端调试新范式
前端·微信小程序·小程序·抓包·系统代理绕过·https证书严格校验·进程隔离
fix一个write十个3 天前
【uniApp开发】微信小程序 web-view 内嵌 H5 跳转支付踩坑实录
微信小程序·uni-app
棋宣3 天前
微信小程序onShareAppMessage 分享-生命周期函数 在vue3中 组合式函数 hooks中不生效
微信小程序·小程序
好赞科技4 天前
深度测评2026年精选美发预约小程序排行榜 革新预约新体验 修订
大数据·微信小程序