随着深度学习推理技术的不断发展,让小型设备运行深度学习成为可能,阿里体育等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();
好了,运动开始前的常规距离、视角预检查就为您分享到这,请关注我们各平台的博客账号,我们将为您分享更多的人体、姿态、运动检测应用技巧。