1

我使用的是 Kinect SDK 1.8,我使用的是默认的 Kinect 控件。KinectRegion 显示 Microsoft.Kinect.Toolkit.Controls 的手形光标。但是手形光标太快太灵敏了。我想让它放慢速度,以便我的 Kinect 应用程序的最终用户可以在屏幕上轻松控制该光标。我尝试了 AccelerometerGetCurrentReading()(第 962 行),还尝试了 KinectAdaptor.cs(第 299 行)handPointer.X、Y、Z,但没有成功。有人可以帮忙吗?我已经阅读了人机界面指南并尝试了 Kinect 交互演示,但它与手形光标的速度相同,就像在我的应用程序中一样。有什么解决方法吗?或者在 PHIZ 中控制手形光标速度的任何属性,将在未来版本中提供。

4

1 回答 1

2

我不知道有任何内置的解决方案。但是,如果您愿意在中间生成一些代码,则可以使用一些技巧。

你说有两个问题

  1. Kinect 光标太快(即对于您的手在现实世界中移动的量,光标在屏幕上移动太多。

  2. Kinect 光标太敏感了。(即 Kinect 的动作很难控制)

对于#1,我不确定光标-> 屏幕映射是否是绝对的。如果您将手放在 Kinect 视觉的边缘,它是否与您的计算机屏幕边缘相匹配?如果是这样,可能很难调整光标的速度(也称为增益)。一个 hack-y 解决方案就是让你的身体远离屏幕,这样你在物理空间中的动作就会更大。

对于#2,您可以实现一个基本的低通滤波器。这意味着大的运动“通过”过滤器,但小的、抖动的运动被忽略。最简单的方法是设置运行平均值。

Point CurrentKinectPoint; //this is the filtered position of the mouse cursor
const double FILTER_FACTOR = 0.5;
void UpdateKinectControlPoint(Point NewPoint) {
    CurrentKinectPoint.x = CurrentKinectPoint.x * FILTER_FACTOR + NewPoint.x * (1 - FILTER_FACTOR);
    CurrentKinectPoint.y = CurrentKinectPoint.y * FILTER_FACTOR + NewPoint.y * (1 - FILTER_FACTOR);
}

我希望这是有帮助的,至少在高级别。

于 2014-07-14T13:38:46.440 回答