java - SimpleOpenNI 记录和回放用户跟踪数据

标签 java kinect processing openni

我能够使用 SimpleOpenNI 成功地记录和回放深度和 rgb 记录(.oni 文件)。我还希望能够从记录的文件中跟踪用户,换句话说,能够轻松地从深度图像中提取人物剪影。在连接到传感器运行时,通过在 setup() 方法中调用 enableUser(),然后获取 userMap()<,使用 SimpleOpenNI 很容易做到这一点userImage() 在绘制调用期间。这样做的动机是能够轻松地从背景中分割出一个人的轮廓。我使用的是 SimpleOpenNI 1.96 版。

这是我在记录数据时使用的代码:

SimpleOpenNI context;
public void setup()
{       
    context = new SimpleOpenNI(this);

    // recording
    context.enableDepth();  
    context.enableRGB();
    context.enableUser();
    context.enableRecorder(recordPath);

    // select the recording channels
    context.addNodeToRecording(SimpleOpenNI.NODE_DEPTH,true);
    context.addNodeToRecording(SimpleOpenNI.NODE_IMAGE,true);
    context.addNodeToRecording(SimpleOpenNI.NODE_USER, true);
    context.addNodeToRecording(SimpleOpenNI.NODE_PLAYER, true);
    context.addNodeToRecording(SimpleOpenNI.NODE_SCENE, true);
    context.addNodeToRecording(SimpleOpenNI.NODE_IR, true);
}

这是我用来重放数据的代码:

SimpleOpenNI context;
String recordPath = "/path/to/test.oni";
public void setup()
{       
context = new SimpleOpenNI(this,recordPath);
    context.enableDepth();
    context.enableRGB();
    context.enableUser();
}
...

方法调用 context.enableUser(); 当我尝试重放数据时导致错误 Couldn't getXN_STREAM_PROPERTY_ZERO_PLANE_DISTANCE Invalid memory access of location 0x4c rip=0x10e2c38e2。但是,我知道为了获取有关正在跟踪哪些用户的信息,我需要调用 context.enableUser()。删除此行会删除错误,但不允许我访问有关正在跟踪哪些用户的信息。

有人知道是否可以从预先录制的 .oni 文件中跟踪用户吗?

最佳答案

是的,在旧版本的 SimpleOpenNI 中是可能的。

但在 1.96 版本中不可能没有错误。
有一个错误报告(请参阅 Google 项目页面中的问题 103。我将链接添加到评论中,因为我无法在声誉太低的答案中发布更多链接。)提到了这一点。

但是有一种方法可以在旧版本的 SimpleOpenNI 中记录 .oni 文件,并在 1.96 版本中使用它们来跟踪用户:
我通过安装 SimpleOpenNI 0.27 设法记录了 userMap() 数据, 在 old installation guide 之后并使用 Processing 1.5.1 和 SimpleOpenNI 0.27 附带的 RecorderPlay 示例。
然后我能够在 SimpleOpenNI 1.96 和 Processing 2.2.1 中播放 .oni 文件以检索 userMap 和骨架数据。

我使用的是 Mac Book Pro Retina 和 OS X 10.9.4。

关于java - SimpleOpenNI 记录和回放用户跟踪数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19534014/

相关文章:

物体体积计算/估计

javascript - 如何在 ProcessingJS 中使用 mousePressed?

java - java页面上下文属性的垃圾收集

java - 使 apache lenya 与 mysql 一起工作

c++ - 骨架平滑无法正常工作

c++ - 在 C++ 中读取 kinect 深度文件

javascript - 如何将数据从 processing.js 序列化到 Rails 应用程序?

java - arraylist 整数中出现意外结果 - pde

java - 使用二维数组绘图

Java:在数组中使用 "08"和 "09"