【一步步开发AI运动APP】三、使用相机组件抽帧

news/2025/4/1 5:45:51/文章来源:https://www.cnblogs.com/alphaair/p/18795229

之前我们为您分享了【一步步开发AI运动小程序】开发系列博文,通过该系列博文,很多开发者开发出了很多精美的AI健身、线上运动赛事、AI学生体测、美体、康复锻炼等应用场景的AI运动小程序;为了帮助开发者继续深耕AI运动领域市场,今天开始我们将为您分享新系列【一步步开发AI运动APP】的博文,带您开发性能更强、体验更好的AI运动APP。

一、ai-camera组件介绍

使用过uni开发过APP的开发者,应该了解在uni-appuni-app x的APP模式下,不像小程序模式下有原生Camera组件可以使用操控相机,需要引入第三方插件或自行实现相机的预览、拍照、抽帧、录像等能力。
为了进一步减轻AI运动APP开发者的工作量,降低AI运动能力集成难度,在UNI-APP版的「AI运动识别」插件中,我们专门为AI运动场景量身打造了相机操控组件ai-camera
组件同时支持Android和iOS多平台;配置和操控API借鉴了小程序的风格,以减少开发者的学习使用成本;ai-camera相较于小程序的Camera更贴合AI运动场景,有些更强的操控能力、更高的抽帧处理效果、更多的高频应用API。
当然其他非AI运动APP开发者,也可以用来平替APP模式无相机组件的问题,完全能满足其它场景的预览、拍照、抽帧需求,以满足相机多端发布的需求。

二、获取相机上下文

在对相机进行抽帧、拍照等操作前,需要获得相机组件的操控上下文,而且成功获取上下的前提是,页面中有ai-camera组件,且建议在on-ready触发时获取,代码如下:

<template><yz-ai-camera id="camera" class="camera" :device="cameraDevice" resolution="medium" @on-camera-ready="onCameraReady" />
</template>
<script>
//相机调用前须申请相应权限
import {Frame, ExtractFrameOptions, getCameraContext} from "@/uni_modules/yz-ai-sport";
export default {data(){cameraDevice: 'back'},methods:{onCameraReady() {const context = getCameraContext();let cameraDesc = context.getCurrentCamera();console.log(cameraDesc);}}
}
</script>

三、执行相机抽帧

在获得了相机操控上下文后,就可以对相机进行抽帧操作了,代码如下:

...
<script>
export default {....methods:{onExtract() {const context = getCameraContext();context.startExtractFrame({onFrame(frame){console.log(frame.width,frame.height,frame);}});//5s后停止抽帧setTimeout(()=>{context.stopExtractFrame();},5000);}}
}
</script>

四、将帧保存到相册

在相机抽帧中,经常会遇到需要将抽取的帧将转换成jpg等格式图像进行保存,插件专门为类似场景提供解析并保存帧图像至相册中的能力,代码如下:

...
<script>
export default {....methods:{onExtract() {const context = getCameraContext();context.startExtractFrame({onFrame(frame){//不建议每帧都保存,抽帧率都非常高,容易在相册中留下非常多的文件,浪费存储空let file = context.saveFrameToAlbum(frame);console.log(file);}});}}
}
</script>

好了,相机组件的基本应用就为您介绍到这,更多的相机能力,请参考插件API文档和Demo。

下篇我们将为您介绍人体识别检测,敬请期待...

image

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/906549.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Docker Desktop,docker save 报错:Error response from daemon: write xxx : no space left on device

前言 在使用 docker save 时报错:docker save lanling-text-trainer:v1 -o lanling-text-trainer.tar Error response from daemon: write /var/lib/docker/tmp/docker-export-1292051631/34bda97aaedafa599cb48e60f010ce2e474f725817509a2153979af694021656/layer.tar: no sp…

19K+ Star!一款基于 Vue3 实现的后台管理系统!

vue-manage-system —— 一套基于 Vue3 + Element Plus + TypeScript 实现的多功能的后台前端模板框架,适用于绝大部分的后台管理系统开发。大家好,我是 Java陈序员。 今天,给大家推荐一款基于 Vue3 实现的后台管理系统前端模板框架,适合外包项目,实现快速交付!关注微信公…

3.10黑盒测试

实验一 黑盒测试 一、实验目的 1、 掌握黑盒测试的基础知识; 2、 掌握黑盒测试的检查内容及测试目的; 3、 掌握黑盒测试的几种基本测试方法:等价类划分方法、边界值分析方法、因果图法和决策表法; 二、实验要求 1、 复习有关内容,理解黑盒测试; 2、 掌握等价类划分、…

利用大模型LLM生成训练数据

项目:https://github.com/jiangnanboy/llm_dataset_generation这里假设一家海嘉物流公司,此公司需做一个关于本公司物流的问答机器人,需要判断用户的查询语句是否与本公司物流相关,需要训练数据进行分类,故利用deepseek进行生成与审核,免于无数据和标注的烦恼。 datas…

20231904 2023-2024-2 《网络攻防实践》实验五

一、实践内容 (1)配置Linux操作系统平台上的iptables,完成过滤ICMP数据包和特定IP地址访问主机等功能; (2)使用Snort对pcap文件进行入侵检测,获得并分析报警日志; (3)分析虚拟网络攻防环境中蜜网网关的防火墙和IDS/IPS配置规则。 二、实践过程 本次实验使用以下虚拟机…

如何高效智能地进行设备数据采集,提高企业核心竞争力?

机台设备数据采集是指通过各种技术手段和设备,从生产制造过程中的机台设备上获取各种相关数据的过程。采集的目的:1.生产监控:实时了解机台设备的运行状态,如是否正常工作、运行速度、工作时长等,以便及时发现设备故障或异常情况,保障生产过程的连续性和稳定性。 2.质量控…

树莓派2B的选购建议及相关分析

# 2015年淘宝买了一块树莓派2B,10多年过去了软件支持还是可以运行,非常给力!一、树莓派2B的硬件特性与适用场景基础配置处理器:搭载Broadcom BCM2836芯片,4核ARM Cortex-A7,主频900MHz。 内存:1GB RAM(早期版本可能为512MB)。 接口:4个USB 2.0、HDMI、以太网口、Micr…

2025必看:跨网文件安全交换系统 如何提升数据保护和管理能力?

在数字化转型的浪潮中,企业数据已成为核心资产。然而,随着企业业务的扩展和全球化,跨网文件交换变得越来越频繁,数据泄露、未授权访问和合规性问题也随之而来。传统的文件交换方式(如电子邮件、FTP等)已无法满足企业对数据安全和高效管理的需求。因此,引入专业的跨网文件…

Qt/C++开发经验小技巧311-315

关于流媒体推拉流延时的几点说明。经常看到一些流媒体相关的程序,号称零延迟,不用怀疑,这肯定吹牛逼的。 搞音视频开发,有个核心的指标就是实时性,也就是延迟多少毫秒,这个问题问的也是最多的。 音视频文件几乎不存在实时性问题,只有音视频流才有实时性的指标。 延迟多久…

windows-web1

windows-web1 挑战内容 前景需要: 小李在值守的过程中,发现有CPU占用飙升,出于胆子小,就立刻将服务器关机,并找来正在吃苕皮的hxd帮他分析,这是他的服务器系统,请你找出以下内容,并作为通关条件: 1.攻击者的shell密码 2.攻击者的IP地址 3.攻击者的隐藏账户名称 4.攻击…

CF708E Students Camp

先设 \(D(i)\) 表示 \(k\) 次吹风中 \(i\) 次成功吹在特定行的概率,有 \[D(i)={k \choose i}p^i(1-p)^{k-i} \]设 \(P(l,r)\) 表示某一行只剩下 \((l,r)\) 的砖块的概率,由于左右两边显然独立,于是我们有: \[P(l,r) =D(l-1)D(m-r) \]再设 \(f(i,l,r)\) 表示第 \(i\) 行剩下…

2025.3.27 鲜花

如何优雅的使用 stl如何优雅的使用 stl啥背景,杀乌鸡 ``` Viumbe vyote vya mungu wetu na mfalme wetu Pazeni sauti ili nasi mwimbe Pazeni sauti ili nasi mwimbe Pazeni sauti Pazeni sauti Viumbe vyote vya mungu wetu na mfalme wetu Pazeni sauti ili nasi mwimbe Pa…