首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何获取SKEL_HEAD kinect的x位置?

如何获取SKEL_HEAD kinect的x位置?
EN

Stack Overflow用户
提问于 2015-06-05 04:27:59
回答 1查看 233关注 0票数 0

我正在编码与Arduino,处理和Kinect的安装。我想要的是从处理Kinect用户的示例代码中获得SKEL_HEAD的x-as。

稍后,我想将我头部的x-as映射到180度伺服电机。

我现在所拥有的是,当Kinect激活时,我会在头上画一个红色的圆圈。

代码语言:javascript
复制
void drawSkeleton(int userId) {
  // to get the 3d joint data
  /*
  PVector jointPos = new PVector();
  context.getJointPositionSkeleton(userId,SimpleOpenNI.SKEL_NECK,jointPos);
  println(jointPos);
  */

  // Get X position of HEAD
  PVector jointPos = new PVector();
  context.getJointPositionSkeleton(userId, SimpleOpenNI.SKEL_HEAD, jointPos);
  println("jointPos " + jointPos);

  PVector jointPos2d = new PVector();
  context.convertRealWorldToProjective(jointPos,jointPos2d);  


  fill(255,0,0); // Fill the shape
  ellipse(jointPos2d.x, jointPos2d.y, 40,40); // Create the shape
EN

回答 1

Stack Overflow用户

发布于 2015-06-06 04:10:50

您的代码应该可以工作。调用convertRealWorldToProjective应该将3d坐标转换为2d坐标。我想知道这是不是你想要的贴图:头部的2d位置,而不是头部在Y轴上的旋转?

如果你想映射头部的旋转,你应该能够分解头部关节的3D变换矩阵,尽管我不确定这是否准确。如果不起作用,可以使用other ways获取头部方向。

如果2D位置映射到伺服位置是你想要的,只要你想要的骨骼被跟踪,就应该简单地调用map()函数来对齐位置范围(可能是0-640px取决于你的kinect设置到0-180取决于你的伺服设置-值可能会有一点偏移。

绘制一个自上而下的视图可能会很方便,在这个视图中,你可以将头部在平面上的位置映射到伺服旋转。这听起来有点像看场景,其中伺服需要旋转,以便对象面对头部2d位置。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30653524

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档