- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用官方 Kinect SDK 做一个 kinect 应用程序。
我想要的结果
1)能够识别 body 已经挥手5秒。做某事
2) 能够识别单腿倾斜 5 秒。如果确实如此,请做某事。
有谁知道怎么做?我正在做一个 WPF 应用程序。
想举个例子。我对 Kinect 比较陌生。
在此先感谢您的帮助!
最佳答案
Kinect 为您提供它正在跟踪的骨架,剩下的由您来完成。基本上,您需要为您想要的每个手势创建一个定义,并在每次触发 SkeletonFrameReady 事件时针对骨架运行该定义。这并不容易。
定义手势
定义手势可能非常困难。最简单(最简单)的手势是在单个时间点发生的手势,因此不依赖于四肢过去的位置。例如,如果您想检测用户何时将手举过头顶,则可以在每个单独的帧上进行检查。更复杂的手势需要考虑一段时间。对于您的挥手手势,您将无法从单个画面中判断一个人是在挥手还是只是将手举在他们面前。
所以现在您需要能够存储过去的相关信息,但哪些信息是相关的?您是否应该保留最后 30 帧的存储并针对它运行算法? 30 帧只能为您提供一秒钟的信息。也许 60 帧?或者你的 5 秒,300 帧?人类的移动速度没有那么快,所以也许您可以每 5 帧使用一次,这会将您的 5 秒减少到 60 帧。更好的主意是从帧中挑选相关信息。对于挥手手势,手的当前速度、移动了多长时间、移动了多远等都可能是有用的信息。
在您弄清楚如何获取和存储与您的手势有关的所有信息后,您如何将这些数字转化为定义?挥手可能需要特定的最小速度、方向(左/右而不是上/下)或持续时间。但是,此持续时间不是您感兴趣的 5 秒持续时间。此持续时间是假设用户挥手所需的绝对最小值。如上所述,您无法从一帧中确定波浪。你不应该根据 2、3 或 5 来确定波浪,因为时间不够。如果我的手抽动了几分之一秒,你会认为这是一个波浪吗?可能有一个甜蜜点,大多数人会同意从左到右的运动构成一个波,但我当然不太了解它,无法在算法中定义它。
要求用户在一段时间内做某个手势还有另一个问题。有可能,无论您如何编写定义,这五秒钟内的每一帧都不会看起来像波浪。您可以轻松确定某人是否将手举过头顶五秒钟(因为它可以在单个帧的基础上确定),但对于复杂的手势要做到这一点要困难得多。虽然挥手没有那么复杂,但它仍然显示了这个问题。当您的手在波浪的任一侧改变方向时,它会停止移动几分之一秒。那你还在挥手吗?如果你的回答是肯定的,那就更慢地挥手,这样你就可以在两边多暂停一下。那个停顿还会被认为是波浪吗?很有可能,在五秒手势的某个时刻,定义将无法检测到波浪。所以现在你需要考虑手势持续时间的宽大。如果挥手手势发生了最后五秒的 95%,这是否足够好? 90%? 80%?
我想在这里说明的一点是没有简单的方法来进行手势识别。您必须仔细考虑手势并确定某种定义,将一堆关节位置(骨架数据)转换为手势。您需要跟踪过去帧的相关数据,但要意识到手势定义可能并不完美。
考虑用户
因此,既然我已经说明了为什么难以检测到 5 秒波,那么请至少让我谈谈如何做到这一点:不要。您不应该强制用户在设定的时间段(五秒波)内重复基于 Action 的手势。这是令人惊讶的累人,而不是人们对计算机的期望/想要的。指向和点击是瞬间的;一旦我们点击,我们就会期待回应。没有人希望在打开扫雷器之前必须按住鼠标五秒钟。如果手势持续执行某些操作,例如使用手势在列表中循环,那么在一段时间内重复手势是可以的 - 用户会明白他们必须继续执行手势才能在列表中移动得更远。这甚至使手势更容易被检测到,因为不需要最后 5 秒的信息,你只需要足够的信息来知道用户现在是否在做手势。
如果您希望用户在一定时间内保持手势,请将其设为固定手势(将手放在某个位置 x 秒比挥手容易得多)。给出一些视觉反馈也是一个很好的主意,比如计时器已经启动。如果用户搞砸了手势(错误的手、错误的位置等)并最终站在那里等待 5 或 10 秒钟等待某事发生,他们不会高兴,但这不是这个问题的真正部分。
从 Kinect 手势开始
从小处开始……真的很小。首先,确保您了解 SkeletonData 类。每个骨架上跟踪了 20 个关节,每个关节都有一个 TrackingState。此跟踪状态将显示 Kinect 是否可以实际看到关节 (Tracked),是否正在根据骨架的其余部分确定关节的位置 (Inferred),或者它是否完全放弃了寻找关节的尝试 (NotTracked) .这些状态很重要。您不想仅仅因为 Kinect 看不到另一条腿并报告其位置为假,就认为用户正站在一条腿上。每个关节都有一个位置,这就是您如何知道用户站立的位置......一点一点。熟悉坐标系。
在您了解骨架数据如何报告的基础知识后,尝试一些简单的手势。当用户将手举过头顶时,在屏幕上打印一条消息。这只需要将每只手与 Head 关节进行比较,并查看在坐标平面中任一只手是否高于头部。在你开始工作之后,再做一些更复杂的事情。我建议尝试滑动 Action (手放在 body 前面,从右到左或从左到右移动一些最小距离)。这需要来自过去帧的信息,因此您必须考虑要存储哪些信息。如果你能做到这一点,你可以尝试在短时间内串联一系列滑动手势并将其解释为波浪。
tl;dr:手势很难。从小事做起,一路向上。不要让用户为一个 Action 做重复的 Action ,这既累人又烦人。包括基于持续时间的手势的视觉反馈。阅读这篇文章的其余部分。
关于c# - Kinect手势分析,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7763186/
我刚刚继承了一个旧的 PostgreSQL 安装,需要进行一些诊断以找出该数据库运行缓慢的原因。在 MS SQL 上,您可以使用 Profiler 等工具来查看正在运行的查询,然后查看它们的执行计划。
将目标从Analytics(分析)导入到AdWords中,然后在Analytics(分析)中更改目标条件时,是否可以通过更改将目标“重新导入”到AdWords,还是可以自动选择? 最佳答案 更改目标值
我正在使用google analytics api来获取数据。我正在获取数据,但我想验证两个参数,它们在特定日期范围内始终为0。我正在获取['ga:transactions']和['ga:goalCo
我使用Google API从Google Analytics(分析)获取数据,但指标与Google Analytics(分析)的网络界面不同。 即:我在2015年3月1日获得数据-它返回综合浏览量79
我在我的Web应用程序中使用sammy.js进行剔除。我正在尝试向其中添加Google Analytics(分析)。我很快找到了following plugin来实现页面跟踪。 我按照步骤操作,页面如
当使用 Xcode 分析 (product>analyze) 时,有没有办法忽略给定文件中的任何错误? 例如编译指示之类的? 我们只想忽略第三方代码的任何警告,这样当我们的代码出现问题时,它对我们
目录 EFK 1. 日志系统 2. 部署ElasticSearch 2.1 创建handless服务 2.2 创建s
关闭。这个问题不满足Stack Overflow guidelines .它目前不接受答案。 想改善这个问题吗?更新问题,使其成为 on-topic对于堆栈溢出。 7年前关闭。 Improve thi
GCC/G++ 是否有可用于输出分析的选项? 能够比较以前的代码与新代码之间的差异(大小、类/结构的大小)将很有用。然后可以将它们与之前的输出进行比较以进行比较,这对于许多目的都是有用的。 如果没有此
我正在浏览 LYAH,并一直在研究处理列表时列表理解与映射/过滤器的使用。我已经分析了以下两个函数,并包含了教授的输出。如果我正确地阅读了教授的内容,我会说 FiltB 的运行速度比 FiltA 慢很
在 MySQL 中可以使用 SET profiling = 1; 设置分析 查询 SHOW PROFILES; 显示每个查询所用的时间。我想知道这个时间是只包括服务器的执行时间还是还包括将结果发送到前
我用 Python 编写了几个用于生成阶乘的模块,我想测试运行时间。我找到了一个分析示例 here我使用该模板来分析我的模块: import profile #fact def main():
前几天读了下mysqld_safe脚本,个人感觉还是收获蛮大的,其中细致的交代了MySQL数据库的启动流程,包括查找MySQL相关目录,解析配置文件以及最后如何调用mysqld程序来启动实例等,有着
1 内网基础 内网/局域网(Local Area Network,LAN),是指在某一区域内有多台计算机互联而成的计算机组,组网范围通常在数千米以内。在局域网中,可以实现文件管理、应用软件共享、打印机
1 内网基础 内网/局域网(Local Area Network,LAN),是指在某一区域内有多台计算机互联而成的计算机组,组网范围通常在数千米以内。在局域网中,可以实现文件管理、应用软件共享、打印机
我有四列形式的数据。前三列代表时间,value1,value 2。第四列是二进制,全为 0 或 1。当第四列中对应的二进制值为0时,有没有办法告诉excel删除时间、值1和值2?我知道这在 C++ 或
我正在运行一个进行长时间计算的 Haskell 程序。经过一些分析和跟踪后,我注意到以下内容: $ /usr/bin/time -v ./hl test.hl 9000045000050000 Com
我有一个缓慢的 asp.net 程序正在运行。我想分析生产服务器以查看发生了什么,但我不想显着降低生产服务器的速度。 一般而言,配置生产盒或仅本地开发盒是标准做法吗?另外,您建议使用哪些程序来实现这一
我目前正在尝试分析 Haskell 服务器。服务器永远运行,所以我只想要一个固定时间的分析报告。我尝试只运行该程序 3 分钟,然后礼貌地要求它终止,但不知何故,haskell 分析器不遵守术语信号,并
是否有工具可以分析 Maven 构建过程本身,以便我可以看到构建花费最多时间的地方? 我们在工作中遇到了关于 Maven 3.0.3 和 3.0b1 的问题。与 3.0.3 (9m00s) 相比,我们
我是一名优秀的程序员,十分优秀!