1

我正在构建一个 kinect 驱动的 .net 应用程序,是否可以限制 kinect 的检测距离?

就像我有一个由 kinect 控制的交互式购物窗口,我只希望检测到踩到地面 X 标记的人,或者说距离传感器 3 米远的人被检测到。如果有人比 3 米更近或更远,它就不会检测到他。

我使用 VB.Net 进行编码,尽管大部分代码都是从 C# 翻译的,但非常感谢任何帮助。

谢谢。

4

2 回答 2

3

在您的 SkeletonFrameReady 回调中,您可能有一个foreach循环(或类似的)来逐步通过您的活动骨架。您还应该查看它们是否被主动跟踪。

foreach (Skeleton skeleton in _skeletons) {

    // some extra setup stuff here...

    if (skeleton.TrackingState != SkeletonTrackingState.Tracked)
      return;

    // the Kinect is actively tracking the skeleton at this point

    ...
}

此时您要做的是检查此Z人的位置。选择一个你想用作参考的关节——我建议你使用头部、臀部或脊柱。如果Z位置是您想要的位置,请继续对骨架进行操作。

foreach (Skeleton skeleton in _skeletons) {
    ....

    if (skeleton.TrackingState != SkeletonTrackingState.Tracked)
      return;

    if (skeleton.Joints[JointType.Spine].Position.Z < _minValue || skeleton.Joints[JointType.Spine].Position.Z > _maxValue)
      return;

    // if you reach this point, the person is standing a certain distance from the Kinect.  Not too close, not too far away.

}

您将需要检查该Z位置的范围。它可以是一个很小的范围,但你想给用户足够的空间来移动一点,而不会让 Kinect 忽略它们。

更新:您也可以Position使用Skeleton. 它在 Kinect 的 FOV 中对整个骨架的计算点有一个 x/y/z 参考。

于 2012-11-25T03:59:59.120 回答
0

遍历所有检测到的骨架并将骨架设置为主骨架,其中心关节的 Z 位置在 X 标记距离处。考虑 60 厘米的公差。

于 2012-11-29T21:34:39.200 回答