定义Kinect的跟踪区域

时间:2018-07-04 10:37:05

标签: kinect

是否可以使用Kinect(使用任何可用的SDK)为骨架跟踪指定(矩形)区域?我想确保仅跟踪指定区域内的用户,并且确保传感器不会被其外部的人分散注意力。想想一个游戏区域,在该区域中,玩家与Kinect进行交互,并且应该忽略区域外的旁观者,以免他们混淆传感器。

我想要这样做的原因是,很多时候Kinect会“锁定”在某人或某物上,无论是否应该,然后,传感器很难追踪进入追踪范围的其他人。我想通过定义此区域来避免这种情况。

1 个答案:

答案 0 :(得分:2)

使用Microsoft的官方SDK无法为骨架跟踪指定目标区域,但是有一些潜在的解决方法。

(请注意,我对Kinect的其他SDK不熟悉,请注意,我不确定您是在使用Kinect v1还是v2。)

如果使用的是Kinect v1,请注意,它可以同时跟踪6个玩家(具有骨架位置),但一次只能为2个玩家提供全身骨骼跟踪。可以在官方SDK中指定要为哪个2个玩家进行完整骨骼跟踪,并且可以根据目标游戏区域中的骨骼来进行此操作。

如果这不是问题,而问题是Kinect(v1或v2)已经检测到6个玩家,并且无法检测到您游戏区域中的第7个人,那么这是一个更困难的问题。使用官方的SDK,您无法控制要跟踪的6个播放器。传感器将锁定找到的前6位玩家,因此,如果有第7位玩家进来,则没有简单的方法可以锁定该玩家。

但是,有一些可能的解决方法,包括重置传感器以清除所有骨骼以重新选择6个跟踪的骨骼(请参见线程Skeleton tracking in crowds - Kinect v2):

  

Kinect身体跟踪始终在扫描并查找候选身体   追踪。人体跟踪仅在检测到头部和头部时锁定   面对镜头的人的肩膀。你可以做类似的事情   在目标区域中寻找稳定的斑点点,如果没有   跟踪的身体,请重置Kinect Monitor服务。

     

SDK可以抵抗这种类型的运行时失败,但是   很难的方法。此外,您可以采用一种方法来涵盖   深度摄像头(您的手)来重置跟踪,因为这将使   所有深度/红外都无效,需要重建。

     

-胭脂红Sirignano-MSFT

RobAcheson在同一线程中指出,重新启动传感器是另一种解决方法:

  

我已经成功使用手工方法了一段时间了,   绝对有效-当我在人群中时:)

     

我已经开始调用KinectSensor.Close()和KinectSensor.Open()   如果目标区域中没有骨骼,则> 6。那看起来   也要运作良好。现在我只需要一群人来进行测试。

     

-RobAcheson