是否可以使用Kinect(使用任何可用的SDK)为骨架跟踪指定(矩形)区域?我想确保仅跟踪指定区域内的用户,并且确保传感器不会被其外部的人分散注意力。想想一个游戏区域,在该区域中,玩家与Kinect进行交互,并且应该忽略区域外的旁观者,以免他们混淆传感器。
我想要这样做的原因是,很多时候Kinect会“锁定”在某人或某物上,无论是否应该,然后,传感器很难追踪进入追踪范围的其他人。我想通过定义此区域来避免这种情况。
答案 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