在预先录制的 ONI 文件上使用 openNI 进行骨架跟踪时出现异常
Posted
技术标签:
【中文标题】在预先录制的 ONI 文件上使用 openNI 进行骨架跟踪时出现异常【英文标题】:Exception while Skeleton Tracking using openNI on pre-recorded ONI file 【发布时间】:2012-10-27 08:33:33 【问题描述】:我正在尝试在预先录制的 .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】:我遇到了类似的问题,我想从我生成的 .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 .
我希望这对某人有所帮助。
干杯。
【讨论】:
以上是关于在预先录制的 ONI 文件上使用 openNI 进行骨架跟踪时出现异常的主要内容,如果未能解决你的问题,请参考以下文章
使用 python 和 OpenNI2 录制 Orbbec Astra 流
求PS高手进、我有一个PSD文件、想把里面的一组动作录制成ant、我录制了几次颜色都不对、高手加Q说