十六、AI运动识别中,如何判断人体站位?

2024-06-06 08:47:05 浏览数 (2)

随着深度学习推理技术的不断发展,让小型设备运行深度学习成为可能,阿里体育等IT大厂,推出的“乐动力”、“天天跳绳”AI运动APP,让云上运动会、线上运动会、健身打卡、AI体育指导等概念空前火热。那么,能否将这些在APP成功应用的场景搬上微信小程序,分享这些概念的红利呢?本系列文章就带您一步一步从零开始开发一个AI运动小程序,本系列文章将使用“AI运动识别”小程序插件,插件详情可以前往微信服务市场搜索相应插件。

一、为什么要判断人体站位视角?

上一篇我们介绍了运动识别中,如何实现对人与摄像头的远近预检,以提供识别率和体验。在我们实际的运动应用场景中,为了准确识别到相关运动的关键姿态点,一般会指定视角,如跳绳开合跳需要面或背朝相机,而且像俯卧撑仰卧起坐则需要左右侧对像相机,以获得最佳的识别率和体验。

二、camera-view检测规则

camera-view是插件姿态计算引擎body-calc提供检测当前人体站位(即人体那一侧对准摄像头)的规则。 在正式开始运动前,便可以使用此检测规则,对当前人体姿态进行预检,再通过语音等方式提醒用户调整站位至合适视角,以便获得最佳体验和识别效果。

三、代码实现

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

代码语言:javascript复制
const AiSport = requirePlugin("aiSport");
const humanDetection = AiSport.humanDetection;
const Calculator = AiSport.calc.Calculator;

//也可参考此实现左右视角检查
const rule = {
	name: '正或背对摄像头检查',
	calc: '$or',
	ruels: [{
		name: '正对摄像头检查',
		calc: 'camera-view',
		position: 'front'
	},{
		name: '背对摄像头检查',
		calc: 'camera-view',
		position: 'back'
	}]
};
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
	};
	
	//人体识别
	humanDetection.detectionAsync(image).then(human=>{
		
		//执行检测
		if(!calculator.calculating(human, rule)){
		    console.log('请面或背朝摄像头');
			//播放语音、UI提示...
			return;
		}
		
		//通过,则进入运动检测等应用环节..
	});
});
listener.start();

好了,运动开始前的常规距离、视角预检查就为您分享到这,请关注我们各平台的博客账号,我们将为您分享更多的人体、姿态、运动检测应用技巧。

0 人点赞