首页 > 编程语言 >【一步步开发AI运动小程序】十七、如何识别用户上传视频中的运动、动作、姿态?

【一步步开发AI运动小程序】十七、如何识别用户上传视频中的运动、动作、姿态?

时间:2024-05-20 09:10:54浏览次数:26  
标签:视频 AI frame 抽帧 运动 识别 上传

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

一、引言

通过本系列博文的前16篇文章,您已了解通过插件开发一个完整的运动、健身、学生体测、云上运动会等小程序的完整流程了,但是系列之前的文章都是基于相机实时取像的,有的开发者就会问,既然可以实现基于摄像头实时识别,那么能否实现用户上传视频识别呢?今天我们就来看看如何实现基于用户上传视频的运动、动作、姿态检测识别。

二、要解决的关键问题

image
首先我们来看一下基于相机的运动识别流程,如上图所示,将图像来源改为用户上传视频,只要将第一个环节的相机取帧,改为从用户上传视频中取帧即可,而且其它环节由于只依赖图像数据,不依赖具体来源,所以后续环节都是通用的。由于用户上传视频文件,是一个常见操作,故不在这里赘述,本章重点讨论如何从视频抽帧问题。要对视频抽帧,先要对视频进行解码,再逐帧抽取图像。

三、相关API

微信小程序内置了视频码器VideoDecoder,我们使用此API即可实现抽帧功能,关于此API的更多细节,可以查看官方文档。
image

四、代码实现

const AiSports = requirePlugin("aiSport");//获取插件对象
const humanDetection = AiSports.humanDetection;  //获取人体识别对象

function async decoding(){
   //创建解码器
   const decoder = wx.createVideoDecoder();
	
    //启动解码
    await decoder.start({
      abortAudio: true, //识别不需要音频
      source: tempFilePath, //通过wx.chooseMedia选择的视频tempPath
    });
	
    //循环抽帧,直到抽取完成
	let frame = null;
    do {
      frame = decoder.getFrameData();
      if(frame)
         break;

      //对帧进行人体识别
      let human =  await humanDetection.detectionAsync(frame);
      console.log(human);//此处可以将人体识别结果推入运动分析器
	  
    } while (!frame)
}

五、写在最后

到此就实现了基于录制视频的运动、人体、姿态识别的基本功能了,在实际产品应用中,可能还需实现帧图像预览、视频长度限制、跳帧抽取等功能,特别是视频长度大小限制,在实际应用中一定要实现,因为视频解码抽帧是非常消耗手机计算资源功能,上传过大过长的视频容易造成小程序卡顿、崩溃。

好了,本期为就为您介绍到这,下期继续为您基于相册图片上传的运动、人体、姿态识别...

标签:视频,AI,frame,抽帧,运动,识别,上传
From: https://www.cnblogs.com/alphaair/p/18190669

相关文章

  • 最新全域生态!星火九号AI内录伪原创神器教程!
    星火九号独家采用IOS定向去重替换技术和一键草稿替换新技术两种搬运方法,无需剪辑,一键处理视频,直接拍摄,直接替换万物皆可搬,按教程操作秒过斗加,过万不易封,操作简单方便,小白看了教程就可以操作,上手快,万物皆可搬,秒级过原创。注意看一下安装顺序,星火九号→星火三号(内置九号里面一般......
  • 免费考AI OCP认证,附通关秘籍!
    这是一个能让你快速熟悉AI相关技能的考试,由Oracle官方提供,而且限时免费。它就是OCIGenerativeAIProfessional。可以看到,目前免费政策正在执行,到今年的7月31号截止,有想法的小伙伴们要抓紧学习了。具体信息可参考OU官方的介绍:全新推出OCIGenerativeAI免费认证最近刚考完这......
  • The cowherd and the weaving maid
    ThecowherdandtheweavingmaidInthecelestialcourtoftheJadeEmperorlivedsevenprincesses.Eachhadtheirchosenplaceincourt,buttheyoungestprincesshadaspecialskill.Shecouldpluckcloudsfromtheskyandspinthemintothesoftestrob......
  • containerd在线部署
    containerd的作用以及跟docker的区别Containerd是一个用于管理容器生命周期的开源项目。它最初是从Docker项目中分离出来的,现在已经成为了一个独立的项目。它可以用作容器镜像管理工具和容器运行时。它具有以下主要作用:帮助管理容器镜像。它可以下载,上传,删除容器镜像,并对镜像......
  • Vue3使用vue-cropper截图上传
    !!!!!!!已使用另一个截图上传工具,稍后更新博客!!!!!!使用vue-cropper进行截图上传先安装npmivue-cropper编写组件在components中添加imageCropper.vue代码如下<template><div><div><imgv-if="value"class="mb-2"style=&......
  • Vue3+axios+.Net使用分片上传
    Vue3+axios+.Net使用分片上传前端代码在ApiService.cs中增加方法//上传文件publicstaticasyncuploadFile(file){constchunkSize=1024*1024;//1MB每1mb分片consttotalChunks=Math.ceil(file.size/chunkSize);letkey='';lettag=true;leturl=......
  • Centos 无法使用yum 错误:Failed to download metadata for repo ‘AppStream’: Canno
    大家都知道Centos8于2021年年底停止了服务,大家再在使用yum源安装时候,出现下面错误“错误:Failedtodownloadmetadataforrepo‘AppStream’:Cannotprepareinternalmirrorlist:NoURLsinmirrorlist”1、进入yum的repos目录 复制cd/etc/yum.repos.d/ ......
  • AI绘画拉取模型失败,DOS开启代理
    我用了这么久的代理第一次知道DOS里面要开代理,惭愧惭愧。在我远程拉取模型的时候,挂科学也一直失败。在网上找报错找了很长时间没找到,最后经过一位群友的提示下,才知道问题出在DOS代理上面。直接看文章第一部分就行,要是直接tun不行,再看下面的直接开启tun这个是V2的开启方法......
  • 【Mybatis/Mybaits-Plus】【插件】插件执行时机
    1 前言我之前看过插件的执行过程:【Mybatis】【插件】Mybatis源码解析-插件机制,主要是通过一个 Executor的创建以及执行过程串了一下插件,我们这里简单回忆下:(1)Mybatis把所有的插件都放进了 InterceptorChain类里的 interceptors集合里(2)插件的两个时机:入场时机:插件是在......
  • 皮卡鱼象棋AI
    第1盘:(黑方赢)1.炮二平五马8进72.马二进三卒7进13.车一平二车9平84.车二进四马2进35.兵七进一象3进56.马八进七炮2进27.马七进六马7进88.车二平四炮2进19.炮八平六卒3进110.相七进九车1平211.车九平八士6进512.兵五进一炮2平413.车八进九炮4平614.车八退三马8进715.兵七进一炮8平71......