15

我在 Github 上从源代码构建了 OpenNI 和 Sensor,并安装了 Nite。我已经在 Debian 上使用 2.6.39 内核和不同版本的 Java 以及在另一台使用 Lubuntu 11.04 以及 OpenNI 不稳定和 avin2 传感器的计算机上对此进行了测试——结果相同。我还使用预构建的二进制文件进行了测试。

C++ 和 .NET 中的 UserTracker 示例有效,但 UserTracker.java 运行,检测到我的剪影,然后当我做出校准姿势时 JVM 崩溃。这是崩溃前的输出:

New user 1
Pose Psi detected for 1

我已经尝试过使用代码,但我找不到导致它的代码片段 - 它不会在PoseDetectedObserver.update.

这是相关示例的链接:https ://github.com/OpenNI/OpenNI/blob/master/Samples/UserTracker.java/org/OpenNI/Samples/UserTracker/UserTracker.java

有没有其他人遇到过这个问题,或者可能看到了什么问题?

编辑:我在 SamplesConfig.xml 中打开了日志记录,Java 示例在启动时输出这些警告,而 C++ 和 .NET 示例只有最后一个 - 这是我在日志中发现的唯一区别。

  125 INFO       OpenNI version is 1.3.2 (Build 3)-Linux-x86 (Jul 28 2011 03:43:14)
  141 INFO       Filter Info - minimum severity: WARNING, masks: ALL
 2482 WARNING    Failed loading lib: /usr/lib/libXnVFeatures_1_3_0.so: undefined symbol: xnOSStrFormat

 2489 WARNING    Failed to load '/usr/lib/libXnVFeatures_1_3_0.so' - missing dependencies?
 4080 WARNING    Failed loading lib: /usr/lib/libXnVHandGenerator_1_3_0.so: undefined symbol: xnOSStrFormat

 4087 WARNING    Failed to load '/usr/lib/libXnVHandGenerator_1_3_0.so' - missing dependencies?
 7581 WARNING    Open named event: failed to open key file (2) - event might not exist...

edit2:我现在设置了赏金,这是一个详细的日志文件,并从 Lubuntu 11.04 上 OpenNI、NITE 和 avin2 的 SensorKinect 的最新不稳定版本转储:http: //pastebin.com/anG18agp http://pastebin.com/ MKF0G6M

4

1 回答 1

6

OpenNI的java包装类有错误:

在 org_OpenNI_NativeMethods.cpp 中读取:

void XN_CALLBACK_TYPE PoseDetectionHandler(XnNodeHandle hNode, const XnChar* strPose, XnUserID user, void* pCookie)
{
    CallbackCookie* pCallback = (CallbackCookie*)pCookie;
    JNIEnvSupplier supplier;
    jstring jPose = supplier.GetEnv()->NewStringUTF(strPose);
    supplier.GetEnv()->CallVoidMethod(pCallback->obj, pCallback->mid, jPose, user);
    supplier.GetEnv()->ReleaseStringUTFChars(jPose, strPose);
}

但是你不应该释放一个用 newStringUTF 分配的字符串...因此它会崩溃。请参见此处的示例:http ://www.velocityreviews.com/forums/t144581-crash-while-calling-releasestringutfchars-for- newstringutf-string.html

获取源代码...取消注释发布行.. 构建 OpenNI.jni.dll 并且 usetracker.java 将运行!

最好的问候,大卫

于 2011-08-11T16:08:58.297 回答