使用2个Kinect进行检测

Using 2 Kinects for detection

本文关键字:检测 Kinect 2个 使用      更新时间:2023-10-16

我目前正在开发骨架跟踪程序和我的环境是宽的区域,我必须使用1个以上的Kinect来覆盖整个区域。但是,我不能同时NuiInitialize两个运动学。注意,我使用Microsoft KinectSDK Beta2。

有人能帮我吗?

这里还有我的C++代码。

 int no_kinetics =0;
static INuiInstance*  kinect_0=NULL;  
static INuiInstance*  kinect_1=NULL; 
HRESULT hr, hr0, hr1, hr_init_0, hr_init_1;
    hr = MSR_NUIGetDeviceCount(&no_kinetics);
    hr_init_0 = MSR_NuiCreateInstanceByIndex(0, &kinect_0);
    hr0 = kinect_0->NuiInitialize(NUI_INITIALIZE_FLAG_USES_SKELETON);   
    hr_init_1 = MSR_NuiCreateInstanceByIndex(1, &kinect_1);
    hr1 = kinect_1->NuiInitialize(NUI_INITIALIZE_FLAG_USES_SKELETON);   

错误代码为-207086294

我也遇到过同样的问题,只是我使用了C#。当我尝试用深度+player_info或骨骼跟踪来初始化两个Kinect时,我遇到了一个错误。

官方SDK附带的SDK示例从未做过这样的事情。似乎有一种锁可以避免初始化两个运动学。我现在还不知道,这就是为什么会有这样的行为。

试着用骨骼跟踪初始化一个,用简单深度初始化另一个(没有玩家信息),如果这对你来说没有失败,请告诉我。那么,这意味着我们更接近于知道这是否是一种常见/预期的行为

编辑:我在MSDN上找到了这篇文章,MS合作伙伴说:"请注意,视频API有一些限制,比如骨架跟踪和深度+播放器索引流只适用于索引为0的默认设备。编程指南中介绍了这些内容:http://bit.ly/KinectSDKProgrammingGuide"

请参阅:http://social.msdn.microsoft.com/Forums/en-US/kinectsdk/thread/3e72f577-b0a7-4621-9015-3d95eff3a857/

您可以编写一个"服务器"程序,使用kinect通过tcp或udp跟踪移动和调度点。因此,您可以使用运行更多服务器的更多设备。您的应用程序将成为"客户端",从服务器获取跟踪点。如果kinect API不允许您选择要使用的kinect,则可以始终使用两台计算机。