我有兴趣为 Microsoft Kinect 控制台编写一些自制代码。我有一些我认为可以很好地转化为平台的应用程序。我一直在考虑使用OpenKinect 驱动程序和库来尝试一下。显然这将是很多工作,但我想知道有多少。有没有人有 OpenKinect 的经验?您是否仅从设备获取原始视频/音频数据,或者是否有人编写了更高级别的抽象来简化常见任务?
3 回答
OpenKinect库基本上是一个驱动程序——至少现在是这样——所以不要期望它有太多的高级功能。您将或多或少地从深度和摄像机中获取原始数据。
这基本上是每次帧到达时在回调函数中接收的数组。
您可以按照OpenKinect 网站上提供的说明进行尝试,它的安装和试用速度非常快,并且您可以使用glview
提供的应用程序来体验一下它的可能性。我已经使用 设置了一些演示opencv
,即使我没有太多计算机视觉背景,也得到了非常酷的结果,所以我只能鼓励你自己尝试一下!
或者,如果您正在寻找更高级的功能,本周刚刚发布的OpenNI 框架提供了一些令人印象深刻的高级算法,例如骨骼跟踪和一些手势识别。该框架的一部分是来自 PrimeSense 的专有算法(如强大的骨骼跟踪模块......)。我还没有尝试过,也不知道它与 kinect 和不同操作系统的集成程度如何,但是由于来自不同群体(OpenKinect、Willow Garage ......)的一群人正在努力工作,应该一周内不成问题。
进一步详细说明 Jules Olleon 所写的内容,我使用过 OpenNI ( http://www.openni.org ) 和它上面的算法 (NITE),我强烈建议使用这些框架。这两个框架都有很好的文档记录,并附带大量示例,您可以从中开始。
基本上,OpenNI为您抽象了使用传感器及其驱动程序的低级细节,并为您提供了一种从“生成器”(例如,用于获取原始深度数据的 xn::DepthGenerator)获取所需内容的便捷方法。OpenNI 是开源的,可以在任何应用程序中免费使用。OpenNI 还为您处理平台抽象。到今天为止,OpenNI 在 Windows 32/64 和 linux 上得到支持并且运行良好,并且正在移植到 OSX 的过程中。绑定可用于多种编程语言(C、C++、.NET、Python 和我相信的其他一些语言)。
NITE在 OpenNI 之上构建了额外的接口,可以为您提供更高级别的结果(例如跟踪手点、骨架、场景分析等)。您需要检查 NITE 许可证的细节,了解何时/何地可以使用它,但它仍然可能是目前获取分析(例如骨架)的最简单和最快的方法。NITE 是封闭源代码,因此 PrimeSense 需要提供二进制版本供您使用。目前有windows和linux版本。
我没有使用过 OpenKinect,但我已经使用 OpenNI 和 SensorKinect 进行了几个月的研究。如果您打算使用来自 Kinect 的原始数据,它们可以很好地为您提供深度和视频(它们不支持运动控制)。我已经在 Windows 64 位和 Ubuntu 32 位中将它与 C++ 和 OpenGL 一起使用,几乎没有对代码进行任何修改。如果您了解基本的 c++,则非常容易学习。安装它可能有点头疼。
对于骨骼检测、手势识别等更高级的功能,我强烈建议使用中间件,如 NITE 与 OpenNI 或此处提供的中间件:围绕 OpenNI 开发的中间件,而不是重新发明轮子。一旦你有 OpenNI 工作,Nite 也很容易使用;例如,联合识别大约需要 10-20 行额外的代码。
我向年轻的自己推荐的东西是学习和使用基本游戏引擎(例如 Unity)而不是直接使用 OpenGL。它将为您提供更好、更有趣的图形,减少麻烦,还使您能够轻松地将您的程序与其他工具(如PhysX )集成。我没有尝试过,但我知道有一些插件可以在 Unity 中使用 Kinect 驱动程序。