在预先录制的ONI文件上使用openNI进行骨架跟踪时出现异常

时间:2012-10-27 08:33:34

标签: java exception ubuntu-12.04 recording openni

我正在尝试在预先录制的.oni文件上运行示例openNI Skeleton Tracking应用程序(UserTracker.java应用程序)。我编辑了SamplesConfig.xml文件以指示来自ONI文件的输入,而不是Kinect(我实际上没有)。但是,我得到以下例外。有人可以帮我吗?

org.OpenNI.StatusException: Function was not implemented!

at org.OpenNI.WrapperUtils.throwOnError(WrapperUtils.java:30)

at org.OpenNI.Context.initFromXmlEx(Context.java:371)

at org.OpenNI.Context.createFromXmlFile(Context.java:36)

at UserTracker.<init>(UserTracker.java:149)

at UserTrackerApplication.main(UserTrackerApplication.java:67)

任何帮助将不胜感激。谢谢!

编辑:我找到了一个解决方案here,这已经删除了我得到的早期异常,但现在我得到了以下内容!

org.OpenNI.StatusException:此操作无效!

有人知道为什么会这样吗?

1 个答案:

答案 0 :(得分:2)

我有类似的问题,我想从我生成的.oni文件中读取数据,我遇到了同样的问题。现在问题已经解决,也许你也解决了,但我认为将信息分享给可能来到这篇文章的其他人是很重要的。顺便说一句,我在其他帖子中找到了一些线索。

所以这是解决方案。 NiUserTracker示例可以与.oni文件一起使用,因此我检查了代码并执行以下操作:

xn::Player g_Player; //Global variable

//这是主要的或另一个功能

if (argc > 1)
{
    nRetVal = g_Context.Init();
    CHECK_RC(nRetVal, "Init");
    nRetVal = g_Context.OpenFileRecording(argv[1], g_Player);
    if (nRetVal != XN_STATUS_OK)
    {
        printf("Can't open recording %s: %s\n", argv[1], xnGetStatusString(nRetVal));
        return 1;
    }
}

这是C ++代码,我使用c ++。因此,如果他们想要打开一个记录的.oni文件,他们就不会通过XML文件初始化kinect,他们只是通过Init()方法初始化它,然后使用openFileRecording方法打开一个文件。

如果要打开.oni文件,则无需修改XML ,这样您就可以执行一个应用程序,允许您选择是否要使用.oni或kinect

我希望这有助于某人。

欢呼声。

相关问题