我正在尝试在预先录制的.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:此操作无效!
有人知道为什么会这样吗?
答案 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
我希望这有助于某人。
欢呼声。