OpenNI和OpenKinect有什么区别?

27

我正在考虑在我的一个项目中使用Kinect,但是在所有库之间完全迷失了方向。不知道具体是什么。最重要的是,我读到关于OpenNI和OpenKinect的东西。但不知道它们之间的关系/区别。PS. 我正在使用Ubuntu或Mac。

4个回答

39

OpenKinect是一个由人组成的社区,而不是一个库。OpenKinect社区发布了libfreenect Kinect驱动程序。libfreenect和OpenNI+SensorKinect是两个竞争的开源库/驱动程序。libfreenect(Apache 2.0或GPLv2)源自最初的反向工程/黑客Kinect驱动程序,而OpenNI+SensorKinect则源自开源(LGPL)PrimeSense代码。

这两个项目都适用于Windows、Linux(Ubuntu)和Mac OS X。这两个项目允许您访问相机的彩色和深度图像。这些项目不兼容,不能同时使用。

库之间的差异在于电机控制(libfreenect具有此功能,而OpenNI+SensorKinect没有),以及与NITE中间件的集成,用于更高级别的NUI支持(仅限OpenNI+SensorKinect)。这些差异往往会让项目倾向于其中一个库。


3
补充一下: OpenNI主要由PrimeSense开发,PrimeSense是Kinect深度传感器技术背后的公司。这使得OpenNI有点“官方”。 还要提到的是,OpenNI被设计成能够与更广泛的传感器以及未来的NUI设备配合使用。 - Artium
更正:libfreenect确实访问/使用Kinect的图像和深度注册。 - mankoff
Mankoff:很好——看起来这个功能(FREENECT_DEPTH_REGISTERED深度格式)是在2011年10月引入到libfreenect中的。回答已编辑。 - David Scherba
libfreenect和OpenNI能够执行像分割和骨架跟踪这样的丰富处理吗?NITE是用来做什么的? - Shashwat

5

需要补充的是,OpenNI 2使得OpenNI在除Windows以外的其他平台上无法使用。

OpenNI 1.x与Kinect在其他平台上没有得到官方支持,直到一个名叫avin2的人创建了SensorKinect项目,该项目建立在OpenNI之上,并将Kinect的接口暴露给OpenNI。OpenNI 2.0进行了重大重构,对于Kinect,它仅正式支持Windows。 http://social.msdn.microsoft.com/Forums/en-US/kinectsdk/thread/a11ff6d9-7fbe-4636-8ff0-92d6220ac3f8/。在撰写本文时,OpenKinect在最新的Kinect(型号1473)上存在问题,这导致设备无法使用。我不知道是否正在进行修复。

因此,总结一下: - 如果设备型号1473的问题得到解决,那么OpenKinect是可行的选择。而且,坦率地说,我不会相信任何针对特定平台的其他东西。 - 在这个问题得到解决之前,你唯一的选择就是使用已经过时并停止开发的OpenNI 1.5 + SensorKinect,但它是与所有kinect模型兼容的唯一选择。

这已经不再是问题了:libfreenect现在带有一个桥接器,使其作为OpenNI2驱动程序工作。 - piedar

4
尽管这个问题已经几年前了,但我想添加一些我知道的内容。
我是一个相当业余的人,因此让Kinect在Mac上工作始终对我来说很困难。我从github下载了代码,并按照多种说明进行操作,但不能使其正常工作。我记得大约10个月前,我在Mac上使Kinect和OpenNI工作,但它非常不稳定。glview示例程序确实显示了来自Kinect的深度和彩色图像,但时不时地失败。
最近,我发现有个家伙为openni (1和2)、NiTE和libfreenect创建了一个homebrew公式。我尝试了一下,在Mavericks 10.9.2 + 10.9.3上完美地运行,所以如果你还没有使Kinect正常工作,可以看看这里: https://github.com/totakke/homebrew-openni

3

目前为止,OpenNi与Windows版Kinect兼容,而libfreenect则不兼容。


OpenNI的Kinect for Windows支持在Linux和OS X上非常不稳定。 - Cat Zimmermann

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接