OpenNI UserTracker.java示例崩溃

2022-09-03 15:54:13

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

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/mAkf0G6M


答案 1

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);
}

但是你不应该发布StringUTF一个用newStringUTF分配的字符串...因此它崩溃了。有关示例,请参阅此处:http://www.velocityreviews.com/forums/t144581-crash-while-calling-releasestringutfchars-for-newstringutf-string.html

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

最好的问候, 大卫


答案 2

推荐