【问题标题】:SimpleOpenNI Record and Replay User Tracking DataSimpleOpenNI 记录和回放用户跟踪数据
【发布时间】:2013-11-01 06:37:59
【问题描述】:

我能够使用 SimpleOpenNI 成功记录和回放深度和 rgb 记录(.oni 文件)。我还希望能够从记录的文件中跟踪用户,换句话说,能够轻松地从深度图像中提取人物的剪影。在连接到传感器运行时,使用 SimpleOpenNI 很容易做到这一点,方法是在 setup() 方法中调用 enableUser(),然后在绘图调用期间获取 userMap()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 文件中跟踪用户吗?

【问题讨论】:

  • 更新:我还没有弄清楚如何使用预先记录的数据启用用户跟踪,但是作为一种解决方法,我使用了硬阈值,这对于预先记录的数据非常有效。跨度>
  • 您能否更详细地描述您的解决方法?你如何使用“硬门槛”?谢谢,
  • @MaximeTournier,我只是假设所有大于某个最小值且小于某个最大值的深度像素都是用户的一部分,而其他一切都不是用户的一部分。这种方法只适用于预先录制的数据,不适用于实时数据。
  • 好的,我明白了,非常感谢。

标签: java kinect processing openni


【解决方案1】:

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

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-02
    • 1970-01-01
    • 2011-02-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多