无法从Kinect获取深度数据

时间:2012-02-20 21:48:43

标签: java macos kinect jna

我一整天都在试图从Kinect获取(原始)数据而没有成功。

我一直试图将单元测试破解成各种程序,我的Google-fu让我失望 - 我在网上任何地方都找不到使用Java / JNA / osX的任何其他Java示例。

这是我一直在攻击的测试,但似乎无法获得提取帧数据的方法。

 @Test
 public void testDepth() throws InterruptedException {
    assumeThat(dev, is(not(nullValue())));

    final Object lock = new Object();
    final long start = System.nanoTime();
    System.out.println(dev.getDepthMode());
    //dev.startDepth(new DepthHandler(){});
    dev.startDepth(new DepthHandler() {
        int frameCount = 0;

        @Override
        public void onFrameReceived(FrameMode mode, ByteBuffer frame, int timestamp) {

            //ByteBuffer frame1 = frame;
            frameCount++;
            byte[] b = new byte[frame.remaining()];
            System.out.println(frameCount);
            System.out.println(frame.capacity());
            //System.out.println(frame.);
            if (frameCount >= 300) {
                synchronized (lock) {
                    lock.notify();
                    System.out.format("Got %d depth frames in %4.2fs%n", frameCount,
                            (((double) System.nanoTime() - start) / 1000000000));
                }
            }
        }
    });
    synchronized (lock) {
        lock.wait(20000);
    }
}  

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

看看这个项目:https://github.com/murphydactyl/JavaKinectFingerTracker

getDepthFrame函数以可用的形式为您提供深度数据:https://github.com/murphydactyl/JavaKinectFingerTracker/blob/9ed9fcb7836276f7ac9c2bf25569c68417158df5/kinectdigitizer/KinectFrameGrabber.java

如果您尝试使用最新版本的jna运行它,它将无法工作; onFrameReceived函数改变了一点。