【一步步开发AI运动小程序】四、小程序如何抽帧
随着人工智能技术的不断发展,阿里体育等IT大厂,推出的“乐动力”、“天天跳绳”AI运动APP,让云上运动会、线上运动会、健身打卡、AI体育指导等概念空前火热。那么,能否将这些在APP成功应用的场景搬上小程序,分享这些概念的红利呢?本系列文章就带您一步一步从零开始开发一个AI运动小程序,本系列文章将使用“云智AI运动识别小程序插件”,请先行在微信服务市场或官网了解详情。
一、微信小程序抽帧相关API
微信小程序抽帧需要用到Camera组件和CameraContext组件,可以参考官网文档:
1.1、Camera组件
https://developers.weixin.qq.com/miniprogram/dev/component/camera.html
1.2、CameraContext API
https://developers.weixin.qq.com/miniprogram/dev/api/media/camera/wx.createCameraContext.html
二、Camera组件设置
相机组件的frame-size属性直接影响到抽帧后的图像数组大小,所以建议设为medium以下,以便兼顾中低机型。
<camera id="preview" class="preview" style="width:100vw;height:80vh;" flash="off" device-position="back"
resolution="high" frame-size="low" @initdone="onCameraReady">
</camera>
三、调用API抽帧
...
onCameraReady(e) {
const context = wx.createCameraContext();
const listener = context.onCameraFrame((frame) => {
//frame.data图像数组将用于后续的人体识别
console.log(frame.data instanceof ArrayBuffer, frame.width, frame.height);
});
listener.start();
}
...
以上便是微信小程序抽帧的代码,实际应用中还需要对抽帧进行流控,以便达到最佳的性能,可以直接使用Demo项目中的camera-device.js封装好的代码。
四、抽帧的注意事项
4.1 抽取的帧图像大小与camera组件大小是不一致的!!!

这是微信小程序的官方提示,并未说明具体的原因。即:假设给camera组件设定为宽480px高640px,但抽取的帧就不一定是同camera大小宽480px高640px了,具体为frame-size大小决定的,实际要上抽取帧后才能确定。
至于导致这个问题的原因,我们认为是抽帧相接口,需要根据相机支持的分辨率,匹配相应的视频格式,进行视频流编码后返回给抽帧接口。
4.2 全屏适配的问题。
我们建议在实际场景应用中,特别是要开启视频骨骼图的场景,camera及骨骼图canvas保持与帧大小的同比绽放。所以如果要使用全屏,需要自己做适配。
4.3 抽帧参数选择
建议将frame-size设为small,resolution设为high,抽帧FPS设为12即可满足大部分场景应用。
下篇我们将为您介绍如何进行人体识别,敬请期待...
【一步步开发AI运动小程序】四、小程序如何抽帧的更多相关文章
- Apworks框架实战(四):使用Visual Studio开发面向经典分层架构的应用程序:从EasyMemo案例开始
时隔一年,继续我们的Apworks框架之旅.在接下来的文章中,我将逐渐向大家介绍如何在Visual Studio中结合Apworks框架,使用ASP.NET Web API和MVC来开发面向经典分层架 ...
- 小程序开发运营必看:微信小程序平台运营规范
一.原则及相关说明 微信最核心的价值,就是连接——提供一对一.一对多和多对多的连接方式,从而实现人与人.人与智能终端.人与社交化娱乐.人与硬件设备的连接,同时连接服务.资讯.商业. 微信团队一 ...
- 微信小程序从零开始开发步骤(二)创建小程序页面
上一章注册完小程序,添加新建的项目,大致的准备开发已经完成,本章要分享的是 要创建一个简单的页面了,创建小程序页面的具体几个步骤: 1. 在pages 中添加一个目录 选中page,右击鼠标,从硬盘打 ...
- 从程序员小仙飞升上神,java技术开发要如何实现?
新霸哥是一个专业从事java开发的,近期,新霸哥发现很多的朋友在问,从程序员小仙飞升上神难吗?在此新霸哥将为你详细的介绍,下面新霸哥将从新手入门和老司机进阶多方面详细的为大家介绍一下. 说起java首 ...
- OpenCV开发笔记(六十四):红胖子8分钟带你深入了解SURF特征点(图文并茂+浅显易懂+程序源码)
若该文为原创文章,未经允许不得转载原博主博客地址:https://blog.csdn.net/qq21497936原博主博客导航:https://blog.csdn.net/qq21497936/ar ...
- SQL开发中容易忽视的一些小地方(四)
原文:SQL开发中容易忽视的一些小地方(四) 本篇我想针对网上一些对于非聚集索引使用场合的某些说法进行一些更正. 下面引用下MSDN对于非聚集索引结构的描述. 非聚集索引结构: 1:非聚集索引与聚集索 ...
- H5外包 微信小程序外包 小程序外包 就找北京动点开发团队
长年承接微信小程序.微信公众号开发 全职的H5开发团队,开发过几十款微信小程序公众号案例 欢迎来电咨询 QQ:372900288 微信:liuxiang0884 TEL:13911652504
- 【开源】小程序、小游戏和Web运动引擎 to2to 发布
简单轻量跨平台的 Javascript 运动引擎 Github → https://github.com/dntzhang/cax/tree/master/packages/to Simple DEM ...
- # 2016-2017-2 20155319 《Java程序设计》实验四Android程序开发实验报告
2016-2017-2 20155319 <Java程序设计>实验四Android程序开发实验报告 实验一 实验内容 Android Stuidio的安装测试: 参考<Java和An ...
- 20155338 2016-2017-2《Java程序设计》实验四Android程序开发实验报告
2016-2017-2 20155338 <Java程序设计>实验四Android程序开发实验报告 实验过程及成果展示 1.修改res目录下的layout文件夹中的activity_mai ...
随机推荐
- Python 字符串格式化输出
数字 n: int = 1000000000 print(f'{n:_}') # 1_000_000_000 print(f'{n:,}') # 1,000,000,000 对齐 var: str = ...
- 万丈高楼平地起:UML类图
UML类图 UML类图 是一种静态的结构图,描述了系统的类的集合,类的属性和类之间的关系,可以简化了人们对系统的理解.UML类图 是系统分析和设计阶段的重要产物,是系统编码和测试的重要模型. 图示 类 ...
- 【Mac + Appium + Java1.8(三)】之IOS自动化环境安装配置以及简单测试用例编写(模拟器、真机)
前提条件: =========================================== 1.Xcode版本为Xcode10及以上2.Appium版本必须为1.9及以上,因为Xcode为10 ...
- Java核心知识体系9-并发与多线程:线程基础
Java系列 Java核心知识体系1:泛型机制详解 Java核心知识体系2:注解机制详解 Java核心知识体系3:异常机制详解 Java核心知识体系4:AOP原理和切面应用 Java核心知识体系5:反 ...
- 语音识别 可以跑在MCU上吗
Ref: https://developer.arm.com/Additional%20Resources/Video%20Tutorials/AITechTalk-Video-Speech%20re ...
- UC_Center整合单点登录后远程注册不激活问题的解决办法
修改:bbs目录\uc_server\model\user.php 下方法add_user 如下: function add_user($username, $password, $email, $u ...
- Angular 18+ 高级教程 – Component 组件 の @let Template Local Variables
前言 Angular 在 v18.1 推出了 Template 新语法 @let. 这个 @let 和上一篇教的 Control Flow @if, @for, @swtich, @defer 语法上 ...
- Java读取寄存器数据的方法
在Java中直接读取硬件寄存器(如CPU寄存器.I/O端口等)通常不是一个直接的任务,因为Java设计之初就是为了跨平台的安全性和易用性,它并不直接提供访问底层硬件的API.不过,在嵌入式系统.工业控 ...
- SuperMap iManager for K8S 删除旧环境修改NFS地址流程
一.完整删除SuperMap iManager 找到SuperMap iManager安装目录,执行: ./shutdown.sh -v 二.修改NFS存储路径 有两种办法,一种是直接修改/etc/e ...
- STL标准模板库
STL(Standard Template Library)标准模板库 是C++标准库中的一个重要组成部分,它提供了一组通用的模板类和函数,用于数据结构和算法的实现.STL的核心部分包括容器.算法和迭 ...