【一步步开发AI运动小程序】二十、AI运动小程序如何适配相机全屏模式?

news/2024/10/9 9:25:26/文章来源:https://www.cnblogs.com/alphaair/p/18452286

引言 受小程序camera组件预览和抽帧图像不一致的特性影响,一直未全功能支持全屏模式,详见本系列文件第四节小程序如何抽帧;随着插件在云上赛事、健身锻炼、AI体测、AR互动场景的深入应用,各开发者迫切的希望能在全屏模式下应用,以便获得更合理的UI布局和更佳的用户体验,经过我们的努力摸索小程序camera组件的预览处理逻辑,优化更新插件特性,现在已完美支持相机全屏模式应用。

一、全屏模式下产生的问题?

1.1、入镜检测与预览不一致。

camera组件的宽高比与相机输出的图像不一致时,会对预览图像进行裁切,这便有可能会导致检测到了人体,但是预览图像看不到人体的现象。

1.2、骨骼图与人体不重合。

还是由于camera对相机输出图像进行裁切预览的问题,可能会导致输出的骨骼图,人体关键点点位与预览图像不重合的现象。

二、camera如何裁剪预览图像?

经过我们的实测分析,小程序camera组件在宽高比与相机输出图像宽高比不一致时,采用的是长边按比缩放,短边居中裁切的模式进行缩放,如下图所示:
image

这是在相机输出帧大小640px480px/480px640px,camera组件在iPhone 8 plus(屏大小414px*736px)横竖屏下的裁切效果。

三、如何适配处理全屏模式的问题?

根据上面camera的预览裁切模式效果观察,我们只要计算出被裁剪缩放比例及短边两边的留白,并进行相应的缩放及偏移即可,代码如下:

function fullScreenFit(width, height) {const winfo = uni.getWindowInfo();this.previewWidth = winfo.windowWidth;this.previewHeight = winfo.windowHeight;if (winfo.windowHeight > winfo.windowWidth) {//竖屏console.log('竖屏');this.previewRate = winfo.windowHeight / height;this.previewOffsetX = winfo.windowWidth - width * this.previewRate;this.previewOffsetX /= 2;this.previewOffsetY = 0;} else {//横屏console.log('横屏');this.previewRate = winfo.windowWidth / width;this.previewOffsetX = 0;this.previewOffsetY = winfo.windowHeight - height * this.previewRate;this.previewOffsetY /= 2;}
}//配置骨骼图偏移,需升级插件版本至1.5.5以上
this.poseGraphs = new PoseGraphs(ctx, canvas.width, canvas.height, that.previewRate);
this.poseGraphs.offsetX = that.previewOffsetX;
this.poseGraphs.offsetY = that.previewOffsetY;

当然实际使用中,还需要适配横竖屏的样式等,完整代码代码请参考我们提供的Demo项目。

三、全屏模式的副作用及建议。

上面便适配处理好了全屏模式,当然在此模式也可能会带来一些副作用,具体跟相机的输出帧图像和屏幕大小有关。

3.1、人体可视区域变小

由于全屏模式下,会对短边进行裁切,而用户根据的是可视区域进行调整人体站位,所以人体区域便变小了,可能会降低人体识别效果;建议提高camera的分辨率和帧大小至中级,将人体检测范围提高,具体请参考本系列文章相关章节。

3.2、人体检测范围变化

若您在运动时进行了人体远、近站位预检,那相应的range坐标也需进行偏移。

3.2、抽帧帧率下降

由于提高了分辨率和帧大小来应对可视区域变小的问题,在一些偏老机型可能会导致帧率下降问题。

当然以上问题,根据我们的实测,大部分情况和机型不会影响使用。

好了,全屏适配问题就为您介绍到这里,未尽问题可以联系我们进行咨询,插件将致力为您提供全面的AI运动识别解决方案,助力您快速落地AI运动AI体育AI健身AI体测AR互动等运动应用。

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

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

相关文章

实战逆向RUST语言程序

实战为主,近日2024年羊城杯出了一道Rust编写的题目,这里将会以此题目为例,演示Rust逆向该如何去做。关于Rust逆向,其实就是看汇编,考验选手的基础逆向能力。在汇编代码面前,任何干扰都会成为摆设。实战为主,近日2024年羊城杯出了一道Rust编写的题目,这里将会以此题目为…

AI课堂教学质量评估系统

AI课堂教学质量评估系统利用摄像头和人脸识别技术,AI课堂教学质量评估系统实时监测学生的上课表情和课堂行为。同时,系统还结合语音识别技术和听课专注度分析算法,对学生的听课专注度进行评估。AI课堂教学质量评估系统通过收集和分析这些数据,生成教学质量报告,并提供针对…

在线表格技术如何助力企业实现全面预算?

最新技术资源(建议收藏) https://www.grapecity.com.cn/resources/前言 在当今快速变化和竞争激烈的商业环境中,企业需要通过精细化的管理手段来确保自身的市场竞争力和持续发展。全面预算管理(Comprehensive Budget Management)作为企业管理的重要组成部分,不仅为企业的…

考场作弊行为自动抓拍告警系统

考场作弊行为自动抓拍告警系统通过在考场内部布设监控摄像头和智能识别设备,考场作弊行为自动抓拍告警系统实时监测考场内所有考生的行为,考场作弊行为自动抓拍告警系统利用图像识别技术,对考生的行为进行自动抓拍,并分析判断是否存在作弊行为。考场作弊行为自动抓拍告警系…

大数据运维集大成者修行之路

搭建 华为私有云大数据平台 的组件

石油化工领域生产作业流程合规检测

石油化工领域生产作业流程合规检测通过引入AI视觉数据智能分析技术,石油化工领域生产作业流程合规检测对生产作业流程进行实时监测和合规性检测。石油化工领域生产作业流程合规检测利用现场监控摄像头对关键环节、设备和操作进行监测,采集数据并进行实时分析。石油化工领域生…

怎样解决连接数据库失败的问题

解决连接数据库失败的问题通常需要从以下几个方面入手:检查数据库地址:确认数据库服务器的地址是否正确。 检查是否使用了正确的端口号。验证数据库凭证:确保使用的用户名和密码正确无误。 如果使用的是环境变量或配置文件,请确认这些值是否设置正确。网络连接检查:测试从…

如何在网站后台设置网站底部联系方式

要在网站后台设置网站底部的联系方式,通常可以通过以下步骤来实现:登录后台: 首先,你需要登录到网站的内容管理系统(CMS)后台。这通常是通过输入网址后加上/admin或者特定的后台登录路径来访问。找到设置或编辑页面: 在后台管理界面中,寻找“设置”、“页面编辑”或者“模…

织梦CMS遇到数据库连接失败怎么办?

当遇到织梦CMS(Dedecms)数据库连接失败的问题时,可以按照以下步骤进行排查和解决:检查数据库配置确认include/config.php文件中的数据库配置是否正确,包括数据库服务器地址、用户名、密码以及数据库名称。验证数据库服务状态检查MySQL或使用的其他数据库服务是否正常运行。…

公司网站显示脚本错误怎么解决

公司网站出现脚本错误可能由多种原因造成,下面是一些常见的解决步骤:清除浏览器缓存:清除浏览器中的缓存和Cookies,有时候旧的缓存文件会导致脚本加载失败。检查JavaScript代码:查看浏览器开发者工具中的Console标签页,查看是否有具体的错误信息。 确认所有外部脚本(如广…

怎么修改模板上的内容?更改模板

要修改模板上的内容或更改模板,通常需要遵循以下步骤:定位模板文件:首先找到你想要修改的模板文件的位置。这通常取决于你使用的开发环境和框架。例如,在Web开发中,模板文件可能位于项目的views或templates目录下。编辑模板内容:使用文本编辑器打开模板文件。 根据需求修…

液体泄露检测系统 监控识别管道液体泄漏系统

液体泄露检测系统通过在关键区域安装监控摄像头,液体泄露检测系统对管道的液体泄露情况进行全天候不间断实时监测。液体泄露检测系统利用Ai视觉智能分析技术,实时感知监控画面中管道液体泄露事件。液体泄露检测系统检测到画面中管道设备液体泄露现象时,将自动发出警报提示相…