我一整天都在试图从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);
}
}
非常感谢任何帮助。
答案 0 :(得分:0)
看看这个项目:https://github.com/murphydactyl/JavaKinectFingerTracker
getDepthFrame
函数以可用的形式为您提供深度数据:https://github.com/murphydactyl/JavaKinectFingerTracker/blob/9ed9fcb7836276f7ac9c2bf25569c68417158df5/kinectdigitizer/KinectFrameGrabber.java
如果您尝试使用最新版本的jna运行它,它将无法工作; onFrameReceived
函数改变了一点。