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

发布时间 2023-12-28 09:51:46作者: alphaair

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

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

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

二、camera-view检测规则

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

三、代码实现

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

const AiSport = requirePlugin("aiSport");
const humanDetection = AiSport.humanDetection;
const Calculator = AiSport.calc.Calculator;

//也可参考此实现左右视角检查
const rule = {
	name: '正或背对摄像头检查',
	calc: '$or',
	ruels: [{
		name: '正对摄像头检查',
		calc: 'whole',
		position: 'front'
	},{
		name: '背对摄像头检查',
		calc: 'whole',
		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();

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