Kinect V2 javascript 关节 object 为空
Kinect V2 javascript joints object is empty
在使用 kinect v2 开发 win 8.1 商店应用程序时,我遇到了一些问题,这是我的代码的一部分:
mysensor = WindowsPreview.Kinect.KinectSensor.getDefault();
mysensor.open();
console.log(mysensor);
var isopen_timer = setInterval(function () {
if (mysensor.isOpen) {
console.log("sensor is opened");
myreader = mysensor.bodyFrameSource.openReader();
myreader.addEventListener('framearrived', handleFrame);
clearInterval(isopen_timer);
}
}, 10);
//open reader and listen for update
//called on each frame updated
function handleFrame(e)
{
var frame = e.frameReference.acquireFrame();
if (frame) {
frame.getAndRefreshBodyData(bodies);
for (var i=0;i<6;i++) {
if (bodies[i].isTracked) {
var joints = bodies[i].joints
console.log(Object.keys(joints));
}
else {
}
}
frame.close();
}
}
我的传感器打开,一切正常,我得到一个跟踪 body,但是当我尝试访问 body.joints
object 并尝试列出密钥时,我得到空数组。
有人知道哪里出了问题吗?
这可能很奇怪,但我想回答我自己的问题以防万一有人在寻找问题。
lookup
方法是关键:
目前对 kinect v2 javascript API 的参考和支持非常薄弱,但在对 MS 示例进行一些挖掘后,这里就是答案,使用 body.joints 上的查找方法来检索关节数据。
lookup
方法的工作原理如下body.joints.lookup(joint_index)
,其中关节数不能超过25(最大值joint_index是从0开始的24),这个方法会return一个具有详细关节数据的对象,如 (x,y,z)。
您可以忽略未跟踪的关节,因为每个关节都具有以下属性:
type
和 trackingstate
跟踪状态:
Inferred 关节数据是通过从其他跟踪关节计算得出的。由于数据是计算出来的,所以对数据的信心很低。
(属性 值:0)
NotTracked关节数据未被追踪;没有可用的联合数据。
(属性 值:1)
Tracked 联合数据被跟踪并且可用。由于跟踪数据,因此对数据的信心非常高。 (属性 值:2)
关节类型
请参考table发现here
在使用 kinect v2 开发 win 8.1 商店应用程序时,我遇到了一些问题,这是我的代码的一部分:
mysensor = WindowsPreview.Kinect.KinectSensor.getDefault();
mysensor.open();
console.log(mysensor);
var isopen_timer = setInterval(function () {
if (mysensor.isOpen) {
console.log("sensor is opened");
myreader = mysensor.bodyFrameSource.openReader();
myreader.addEventListener('framearrived', handleFrame);
clearInterval(isopen_timer);
}
}, 10);
//open reader and listen for update
//called on each frame updated
function handleFrame(e)
{
var frame = e.frameReference.acquireFrame();
if (frame) {
frame.getAndRefreshBodyData(bodies);
for (var i=0;i<6;i++) {
if (bodies[i].isTracked) {
var joints = bodies[i].joints
console.log(Object.keys(joints));
}
else {
}
}
frame.close();
}
}
我的传感器打开,一切正常,我得到一个跟踪 body,但是当我尝试访问 body.joints
object 并尝试列出密钥时,我得到空数组。
有人知道哪里出了问题吗?
这可能很奇怪,但我想回答我自己的问题以防万一有人在寻找问题。
lookup
方法是关键:
目前对 kinect v2 javascript API 的参考和支持非常薄弱,但在对 MS 示例进行一些挖掘后,这里就是答案,使用 body.joints 上的查找方法来检索关节数据。
lookup
方法的工作原理如下body.joints.lookup(joint_index)
,其中关节数不能超过25(最大值joint_index是从0开始的24),这个方法会return一个具有详细关节数据的对象,如 (x,y,z)。
您可以忽略未跟踪的关节,因为每个关节都具有以下属性:
type
和 trackingstate
跟踪状态:
Inferred 关节数据是通过从其他跟踪关节计算得出的。由于数据是计算出来的,所以对数据的信心很低。 (属性 值:0)
NotTracked关节数据未被追踪;没有可用的联合数据。 (属性 值:1)
Tracked 联合数据被跟踪并且可用。由于跟踪数据,因此对数据的信心非常高。 (属性 值:2)
关节类型
请参考table发现here