使用2个Kinects进行检测

时间:2012-01-19 06:23:22

标签: c++ runtime-error kinect

我目前正致力于骨骼跟踪计划和我的环境 是广阔的区域,我必须使用超过1 Kinect覆盖整个区域。 但是,我不能同时NuiInitialize 2 kinects。请注意我使用 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);   

,错误代码为-2097086294

2 个答案:

答案 0 :(得分:0)

我一直有同样的问题,只是我使用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/

答案 1 :(得分:0)

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