Kinect屏幕边缘检测不灵敏的解决方案

news/2025/9/26 14:41:25/文章来源:https://www.cnblogs.com/WantPeach/p/19113472


在做体感项目时,在边缘部分的抓取动作识别非常差
于是我做出了优化,不采用原本的映射关系:
假设原本人物站在中间,保持位置不动,右手臂向右伸直,终点为屏幕的极限位置
此时我们并不将手臂伸直的位置映射到屏幕的极限位置,而是映射到屏幕的120%处,如此一来,原设备检测的区域就变为了20%——80%之间,保证了一定的精度

 

            Rect rectCanvas = LeftCursor.canvas.pixelRect;float xoffset = (rectCanvas.width) / 2;float yoffset = rectCanvas.height / 2;float multiple = 2f;Vector3 posSprite = new Vector2(Mathf.Clamp(multiple * (leftHandScreenPos.x * rectCanvas.width - xoffset) ,- xoffset,xoffset) , Mathf.Clamp(multiple*(leftHandScreenPos.y * rectCanvas.height - yoffset),-yoffset,yoffset) );Vector3 posSprite1 = new Vector2(Mathf.Clamp(multiple * (rightHandScreenPos.x * rectCanvas.width - xoffset), -xoffset, xoffset),Mathf.Clamp(multiple*(rightHandScreenPos.y * rectCanvas.height - yoffset),-yoffset,yoffset) );

此外,还可以使用List<Vector3>来存储历史数据,然后在每次更新时计算平均值,获得更稳定的位置更新。

 

    // 存储关节历史数据,用于平滑private readonly Queue<Vector3> LefthandData = new Queue<Vector3>();private readonly Queue<Vector3> RighthandData = new Queue<Vector3>();/// <summary>/// 设置空间坐标/// </summary>private void ScreenSetting(){if (interactionManager!=null){leftHandScreenPos = interactionManager.GetLeftHandScreenPos();rightHandScreenPos = interactionManager.GetRightHandScreenPos();Rect rectCanvas = LeftCursor.canvas.pixelRect;float xoffset = (rectCanvas.width) / 2;float yoffset = rectCanvas.height / 2;float multiple = 2f;Vector3 posSprite = new Vector2(Mathf.Clamp(multiple * (leftHandScreenPos.x * rectCanvas.width - xoffset) ,- xoffset,xoffset) , Mathf.Clamp(multiple*(leftHandScreenPos.y * rectCanvas.height - yoffset),-yoffset,yoffset) );Vector3 posSprite1 = new Vector2(Mathf.Clamp(multiple * (rightHandScreenPos.x * rectCanvas.width - xoffset), -xoffset, 
xoffset),Mathf.Clamp(multiple*(rightHandScreenPos.y * rectCanvas.height - yoffset),-yoffset,yoffset) );if (!isLerp){if (LefthandData.Count < 20){LefthandData.Enqueue(posSprite);}else{LefthandData.Dequeue();LefthandData.Enqueue(posSprite);}if (RighthandData.Count < 20){RighthandData.Enqueue(posSprite1);}else{RighthandData.Dequeue();RighthandData.Enqueue(posSprite1);}LeftCursor.transform.GetComponent<RectTransform>().anchoredPosition = new Vector3(LefthandData.Average(item => item.x), LefthandData.Average(item => item.y), LefthandData.Average(item => item.z));if (BothHand){RightCursor.transform.GetComponent<RectTransform>().anchoredPosition = new Vector3(RighthandData.Average(item => item.x), RighthandData.Average(item => item.y), RighthandData.Average(item => item.z));}}else{LeftCursor.transform.GetComponent<RectTransform>().anchoredPosition = Vector3.Lerp(LeftCursor.transform.GetComponent<RectTransform>().anchoredPosition, posSprite, Time.deltaTime * 10);if (BothHand){RightCursor.transform.GetComponent<RectTransform>().anchoredPosition = Vector3.Lerp(RightCursor.transform.GetComponent<RectTransform>().anchoredPosition, posSprite1, Time.deltaTime * 10); ;}}}}

 

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

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

相关文章

网站建设话术关键词wordpress 仿豆瓣标注

1、目的 使公司的图纸得到有效的控制&#xff0c;确保生产所用的图纸为最新有效版本&#xff0c;避免因图纸管理不当造成的损失。 2、定义 本制度所述的图纸包括产品总装图、装配图、零件图、工装图纸、检具图纸、包装图纸、工艺流程 3、范围 客户提供的图纸&#xff0c;技…

国内做交互网站WordPress 如何去域名授权

对于关系型数据库而言&#xff0c;针对表的检索&#xff0c;一般来说&#xff0c;建立合适的索引就可以达到很好的检索效果。&#xff08;这里不包含表设计的合理与否&#xff09;比如像状态列这样可选择性非常低的值&#xff0c;该如何检索&#xff1f; 其实这个已经不是关系…

暴力拓客游戏小程序:助力商家高效引流与裂变的智能解决方案

在数字化营销时代,流量获取与用户裂变成为商家经营的核心需求。暴力拓客游戏小程序(以热门口红游戏为核心载体)应运而生,依托微信生态,通过 “游戏 + 裂变” 模式,为运营商和实体商户提供从流量获取、用户转化到…

vue3小坑之-为什么把ref定义的数组赋值给数组对象后取值为空数组?

天呢,居然两年没有上博客园看过了,呜呜呜,日渐废柴 这次总结一个码代码的时候遇到的问题,为什么把数据赋值给数组对象的某个字段,打印出来的是个空数组? 错误写法一:// 动态获取list值,前端可以增删改查 const …

第二类斯特林数

定义 第二类斯特林数记作 \(\begin{Bmatrix}n\\ k\end{Bmatrix}\) 或者 \(S(n,k)\),其意义是将 \(n\) 个互不相同的元素划分为 \(k\) 个相同的非空集合的方案数。 朴素求解 \[\begin{Bmatrix}n\\ k\end{Bmatrix} =\be…

扫码签到赢大奖小程序:助力多场景获客的智能营销工具

在数字化营销浪潮下,线下场景的流量激活与用户留存成为商家核心需求。由厦门掌界网络开发的 “扫码签到赢大奖” 小程序,依托微信生态,以 “签到 + 抽奖” 为核心模式,为门店、景区、展会等场景提供低成本、高效率…

seo基础入门汉中网站seo

公司里绝大多数主机已经禁止外网访问&#xff0c;仅保留一台主机设置socks作为代理服务器。如下为对socks这一概念的学习整理 什么是socks 是一种OSI模型下会话层的协议&#xff0c;位于表示层与传输层之间&#xff0c;作用是&#xff1a; exchanges network packets between…

贵阳建站推广公司蜘蛛搜索引擎

字符编码的问题看似很小&#xff0c;经常被技术人员忽视&#xff0c;但是很容易导致一些莫名其妙的问题。这里总结了一下字符编码的一些普及性的知识&#xff0c;希望对大家有所帮助。 还是得从ASCII码说起 说到字符编码&#xff0c;不得不说ASCII码的简史。计算机一开始发明…

庐江魅力网做网站号码成都网站开发

物理建模是四旋翼无人机控制系统建模的基础&#xff0c;主要涉及到无人机的物理特性和运动学特性。物理建模的目的是将无人机的运动与输入信号&#xff08;如控制电压&#xff09;之间的关系进行数学描述。 四旋翼无人直升机是具有四个输入力和六个坐标输出的欠驱动动力学旋翼…

做网站时,404网页如何指向wordpress weather

Java中的适配器模式&#xff08;Adapter Pattern&#xff09;是一种设计模式&#xff0c;它允许我们将一种类的接口转换成另一种类的接口&#xff0c;以便于使用。适配器模式通常用于在不兼容的接口之间提供一种过渡性的接口&#xff0c;从而使代码更加灵活和可维护。 在Java中…

包装盒在线设计网站二级子域名ip地址查询

http和https区别 HTTP&#xff08;Hypertext Transfer Protocol&#xff09;和HTTPS&#xff08;Hypertext Transfer Protocol Secure&#xff09;是用于在网络上传输数据的两种协议。它们之间的主要区别在于安全性和数据传输方式&#xff1a; 安全性&#xff1a;HTTP是明文传…

docker 镜像/容器

根据镜像启动容器,并进入容器: docker run -it --privileged --entrypoint bash 镜像名特性Docker 镜像Docker 容器本质 只读的模板或快照。包含创建容器所需的文件和元数据。 镜像的运行实例。是一个可写的、隔离的…

jmeter命令行参数详细解释

1. 帮助与版本信息 -h, --help: 显示 JMeter 的使用帮助信息并退出程序 -v, --version: 显示 JMeter 的版本信息并退出程序2. 配置文件相关 -p, --propfile <argument>: 指定 JMeter 要使用的属性文件 -q, --add…

RK3399:性能与能效的嵌入式先锋,解锁多场景应用潜力

在寻求卓越性能与出色能效平衡的嵌入式计算和智能设备领域,瑞芯微(Rockchip)推出的 RK3399 处理器无疑是一个耀眼的明星。这款基于ARM架构的旗舰级SoC(System-on-Chip),凭借其强大的六核CPU、优秀的图形处理能力…

【C++STL详解】带头双向循环结构 + 双向迭代器,核心接口 + 排序效率 + 避坑指南 - 教程

【C++STL详解】带头双向循环结构 + 双向迭代器,核心接口 + 排序效率 + 避坑指南 - 教程pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important…

学做视频的网站有哪些window7用jsp做的网站要什么工具

距离vue3.3发布已经过了一年多(2023.5.11),vue3.3提高开发体验的新特性你用了吗&#xff1f; 组件内部导入复杂类型 3.3之前想在组件内部导入复杂类型做props类型是不支持的。 <script setup lang"ts">import type { People } from /types;withDefaults(define…

Node.js后端学习笔记:Express+MySQL - 指南

Node.js后端学习笔记:Express+MySQL - 指南pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", &quo…

TorchV知识库安全解决方案:基于智能环境感知的动态权限控制

TorchV知识库安全解决方案:基于智能环境感知的动态权限控制在数据即资产的时代,企业知识库的安全不再仅限于“用户名和密码”。TorchV带来的是一种全新的安全范式——让环境成为新的安全边界。————TorchV舒一笑不…

详细介绍:Java HTTP协议(二)--- HTTPS,Tomcat

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

VBA ETH功能应用 | “0”代码构建SOME/IP节点

在智能汽车飞速发展的今天,车载以太网通信已成为功能服务化的核心驱动力。工程师在控制器开发、通信集成和测试验证中,常常面临SOMEIP协议交互的复杂挑战:SD过程繁琐、SessionID等字段具有变化逻辑、纯手动构造二层…