我的问题是:如何让Kinect for Windows V2跟踪数据到Javascript for HTML5游戏或其他浏览器黑客.
我使用Zigfu浏览器插件和我的旧Kinect在浏览器中使用Javascript,这也适用于我的Macintosh.我也知道微软已经发布了用于web开发的kinect.js v1.8.还有一个名为pgte/node-openni(在GIT上查找)的节点包,使您可以使用Web套接字获取Kinect数据.问题是没有这些与新传感器一起工作.
我之所以认为这是可能的原因是因为我找到了这些项目并且它们似乎与Javascript和新传感器一起工作正常但我无法从这些文章中提取足够的信息来开始开发:
项目1:http: //blog.derivatived.com/posts/Kinect-version-2-Operated-Robot-Hand/
我有一个C++项目,我正在使用OpenCV和Libfreenect.我不希望包含像OpenNI那样大而重的东西,并在此过程中创建OpenCV安装依赖项.我想使用此处提供的校准信息来解决并对齐RGB和深度图像.
基于相机矩阵和失真系数单独地分解图像非常容易.但现在我对如何使用校正和投影矩阵来对齐RGB和深度图像感到困惑,因此它们基本上从同一个角度向我展示了相同的东西.经过一段时间的搜索,我无法确定如何使用OpenCV.这是一个模糊的估计,可能会使用reprojectImageTo3D()和warpPerspective(),但我不知道如何.
我怎么能解决这个问题?我正在使用旧的XBOX360 Kinect(0-2047原始差异值范围).
UPDATE
这是我到目前为止编写的部分代码:
// I use callback functions to get RGB (CV_8UC3) and depth (CV_16UC1)
// I undistort them and call the following method
void AlignImages(cv::Mat& pRGB, cv::Mat& pDepth) {
rotationMat = (cv::Mat_<double_t>(3,3) << 9.9984628826577793e-01, 1.2635359098409581e-03, -1.7487233004436643e-02, -1.4779096108364480e-03, 9.9992385683542895e-01, -1.2251380107679535e-02, 1.7470421412464927e-02, 1.2275341476520762e-02, 9.9977202419716948e-01);
translationMat = (cv::Mat_<double_t>(3,1) << 1.9985242312092553e-02, -7.4423738761617583e-04, -1.0916736334336222e-02);
// make a copy in float to convert raw depth data to physical distance
cv::Mat tempDst;
pDepth.convertTo(tempDst, CV_32F);
// …Run Code Online (Sandbox Code Playgroud) 所以我终于在邮件中获得了两个Kinect v2,并期待从他们那里获得一些原始数据,看看他们互相干扰了多少.我去下载SDK,由于某种原因我从未注意到Windows 8的要求......因为在Windows 7中不受支持.
这感觉很虚伪和不必要,但很好,我不能做任何事情.在我浪费一些钱将我的机器升级到我真正不想要的操作系统之前,有没有办法让Kinect v2与Windows 7机器(或者甚至是Ubuntu)通话?我不需要任何花哨的骨骼检测或任何东西; 我只想要原始xyz-rgb数据.我正在阅读关于OpenNI(以及他们新的Apple霸主)的内容,我希望通过一些奇迹,他们的最后一个开源发行版将与Kinect v2s向前兼容?
TL; DR:有没有可以在Windows 7-64bit上与Kinect v2连接的免费SDK?
我正在从openkinect的网站上进行简单的安装,以使用xbox kinect.问题是没有OSX发行版,并假设自制软件将为您安排.
在安装的最后一步,我找到了一个有用的线索,说明我的安装有什么问题.
我被网站告知."如果链接有问题,则必须使用以下命令更改每个libfreenect lib的rpath:"
for i in /opt/local/lib/libfreenect*.dylib; do sudo install_name_tool -id $i $i; done
sudo install_name_tool -change libfreenect.0.2.dylib /opt/local/lib/libfreenect.0.2.dylib /opt/local/lib/libfreenect_sync.dylib
sudo install_name_tool -change libfreenect.0.2.dylib /opt/local/lib/libfreenect.0.2.dylib /opt/local/lib/libfreenect_cv.dylib
sudo install_name_tool -change libfreenect_sync.0.2.dylib /opt/local/lib/libfreenect_sync.0.2.dylib /opt/local/lib/libfreenect_cv.dylib
for i in glview regview hiview glpclview tiltdemo record cppview cvdemo; do sudo install_name_tool -change libfreenect.0.2.dylib /opt/local/lib/libfreenect.0.2.dylib /opt/local/bin/$i; sudo install_name_tool -change libfreenect_sync.0.2.dylib /opt/local/lib/libfreenect_sync.0.2.dylib /opt/local/bin/$i; done
Run Code Online (Sandbox Code Playgroud)
我的rpath肯定设置不正确.当用CMake构建时,这个次要消息肯定证实了我的怀疑.
CMake Warning (dev):
Policy CMP0042 is not set: MACOSX_RPATH is enabled by default. Run "cmake
--help-policy CMP0042" for policy …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用 Processing 为基本的 Kinect (v2) 深度云调整 Daniel Shiffman 的代码,但是屏幕中间总是有一个像素不会去任何地方,这很烦人。这是我的意思的一个例子。
您可以看到它似乎就在前面,并且在视野中的任何物体移动时都不会移动。
这是我用来生成上面图像的代码,(这是我正在尝试做的非常精简的版本)
// imports for openkinect
import org.openkinect.freenect2.*;
import org.openkinect.processing.*;
import java.nio.FloatBuffer;
// dots size is dot_size*skip
int dot_size = 2;
// step size when iterating through pixel array
int skip = 5;
// Kinect Library object
Kinect2 kinect2;
// Angle for rotation
float a = 3.1;
void setup() {
// Rendering in P3D
size(1500,1000,P3D);
// start the kinect
kinect2 = new Kinect2(this);
kinect2.initDepth();
kinect2.initDevice();
smooth(16);
// Black background
background(0);
} …Run Code Online (Sandbox Code Playgroud) 我正在使用libfreenect驱动程序上的Kinect(原始的Xbox版本)(顺便说一句,我在Ubuntu 12.04上).我已经从git克隆了最新版本并按照以下说明手动安装:http://openkinect.org/wiki/Getting_Started#Ubuntu_Manual_Install
我想访问注册的深度值.据我所知,Kinect已经过工厂校准,并且有一个查找表匹配正确RGB像素的深度像素.
我可以很好地打开Kinect并检索原始的11位深度数据.对于1到7.5米的距离,这给出了从大约730到1045的非线性值.
运行device->setDepthFormat(FREENECT_DEPTH_MM);使得Kinect输出距离以mm为单位,因此setDepthFormat似乎可以正常工作.
运行device->setDepthFormat(FREENECT_DEPTH_REGISTERED);似乎没有效果,因为只输出原始深度值.我错过了什么?
我正在尝试使用OpenKinect项目编写一些程序.我想将OpenKinect的主分支添加为项目源的子目录.但是,如果你看看OpenKinect自己的CMake,那里有太多的东西,我不需要一切.那里有某些选项,它们被设置为ON或OFF,如下所示:
OPTION(BUILD_AUDIO "Build audio support" OFF)
OPTION(BUILD_REDIST_PACKAGE "Build libfreenect in a legally-redistributable manner (only affects audio)" OFF)
OPTION(BUILD_EXAMPLES "Build example programs" ON)
OPTION(BUILD_FAKENECT "Build fakenect mock library" ON)
OPTION(BUILD_C_SYNC "Build c synchronous library" ON)
OPTION(BUILD_CPP "Build C++ Library (currently header only)" ON)
OPTION(BUILD_CV "Build OpenCV wrapper" ON)
OPTION(BUILD_AS3_SERVER "Build the Actionscript 3 Server Example" OFF)
OPTION(BUILD_PYTHON "Build Python extension" ON)
IF(PROJECT_OS_LINUX)
OPTION(BUILD_CPACK "Build an RPM or DEB using CPack" ON)
ENDIF(PROJECT_OS_LINUX)
Run Code Online (Sandbox Code Playgroud)
如果不对OpenKinect文件进行任何重大更改(以便我可以git pull随时使用),如何仅将某些部分(例如,C++ wrapper和 …
我正在考虑用Kinect制作一个项目,让我的奶奶控制她的电视而不会被遥控器吓倒.所以,我一直在研究基本的手势识别.目的是当程序检测到右手正在"挥动"时,通过向电视发送正确的红外代码来打开电视的音量.
问题是,无论我在哪里,我似乎都找不到基于Linux的教程,该教程展示了如何通过手势做某事.另外需要注意的是,除了调试窗口之外,我不需要任何GUI,因为这会使我的程序慢下来.
有没有人知道某个地方允许我循环,不断检查一些手势,什么时候,我可以控制一些东西,而不需要任何GUI,在Linux上?:/
我很乐意选择任何语言,但我的经验围绕着Python和C.
我们将非常感谢您的任何帮助.
提前致谢
马特
我有一个带Kinect 2的Xbox One.我想知道我是否可以将它连接到我的电脑上,如果是的话,该怎么做?
所以我知道这个问题之前已经完成,但大部分时间它仍然是在OpenNI和Libfreenect被淘汰的时候.我的问题是:
1)我想知道现在的状态.2)这两者之间的差异(优点,缺点和其他)3)特别是对于骨架跟踪,这是更好的并提供更多关于骨架的数据(例如在Microsoft SDK中它们为20个关节提供数据,它是否相同这两个,更多,更少?)
openkinect ×10
kinect ×8
c++ ×3
cmake ×2
kinect-sdk ×2
linux ×2
build ×1
javascript ×1
macos ×1
node.js ×1
opencv ×1
openni ×1
path ×1
processing ×1
rpath ×1
websocket ×1
xbox-one ×1