0

我在网上搜索了这个问题,但没有找到解决方案。

我开始使用 OpenNI 的示例来开发我的应用程序。我对 C++ 没有太多经验:我是初学者。

我正在使用 OpenNI 1.5.4 的 SimpleSkeleton 示例,它返回头部位置。我需要它,但使用的是我使用 NiViewer 录制的 ONI 文件,而不是来自 kinect 的流数据。

在网上搜索我发现:

xn::Context context;
xn::Player player; 
nRetVal = context.Init();   
nRetVal=context.OpenFileRecording("Myfile.oni",player);
if (nRetVal != XN_STATUS_OK)
{
    printf("Can't open recording file: %s\n",xnGetStatusString(nRetVal));
    return 1;
}

我的代码进入if循环,打印 'Can't open my file.oni ...' 并且不继续运行。我认为问题是设置播放器对象。我能怎么做?或者我该怎么办?

没有线条:

nRetVal=context.OpenFileRecording("Myfile.oni",player);
if (nRetVal != XN_STATUS_OK)
{
    printf("Can't open recording file: %s\n",xnGetStatusString(nRetVal));
    return 1;
}

它运行正常,但使用来自 kinect 而不是来自文件的数据流。

4

1 回答 1

0

即使看起来不是,这也是一个路径问题。我有一个类似的问题,你要么以它不喜欢的方式将它传递给 OpenNI,要么路径无效。

你如何检索路径?尝试使用 boost 获取当前目录,然后将 .oni 文件名附加到该字符串

于 2013-08-15T14:46:41.383 回答