在OpenNI中将Zigfu关节位置从真实世界转换为类似投影的位置

Convert Zigfu joint position from Real World to Projective like in OpenNI

本文关键字:位置 转换 投影 真实世界 中将 OpenNI Zigfu      更新时间:2023-09-26

OpenNI提供了函数ConvertRealWorldToProjective,使您可以轻松地将以毫米为单位的真实世界(x,y,z)关节位置转换为给定视口的以像素为单位的投影(x,y)位置。这对于在网络摄像头上绘制"骨架"非常有用。

这个功能是由ZigJS公开的,或者是作为一个函数,或者可能已经在某个地方转换了?我在文档中找不到任何关于它的提及,但我很幸运,在过去的Zigfu中有一个以前未记录的功能。

user.addEventListener('userupdate', function(user) {
  var real = user.skeleton[zig.Joint.Head].position; // this is real world coordinate
  // anything exposed by zigfu to convert to real world?
});

如果不是Zigfu提供的,有人知道有什么好的JavaScript库可以提供这种功能吗?

ZigJS公开了两个(不幸的是仍然没有文档记录)方法:convertImageToWorldSpaceconvertWorldToImageSpace。它们都接受一个坐标数组,其中每3个元素表示一个点,并返回转换后的点。

编辑

为了避免其他人的尝试和错误,是嵌入对象,而不是zig本身具有未记录的方法。示例:

var zigObj = zig.findZigObject();
user.addEventListener('userupdate', function(user) {
  var real = user.skeleton[zig.Joint.Head].position;
  var projective = zigObj.convertWorldToImageSpace(real);
  // do something with the converted position, like drawing it over the webcam
});