0

我正在尝试在预先录制的 .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)

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

编辑:我在这里找到了一个解决方案,这已经消除了我之前遇到的异常,但现在我得到了以下内容!

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

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

4

1 回答 1

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。

我希望这可以帮助别人。

干杯。

于 2012-11-22T17:36:20.123 回答