他们在哪里有所不同?
选择libfreenect或OpenNI + SensorKinect有什么好处,例如,官方SDK,反之亦然?
有哪些缺点?
答案 0 :(得分:56)
请注意,以下答案是按日期进行的,有些事实可能会在不久的将来过时。官方Kinect SDK的当前状态是beta 1.00.12。
第一个明显的区别是官方SDK由Microsoft Research团队维护,而OpenKinect是由开源社区维护的开源SDK。两者都有其缺点和优点。
支持编程语言:
操作系统支持:
显然有利于OpenKinect。
许可证:
文档和支持:
设备校准:
不同的Kinect设备可能会略有不同,具体取决于生产它们的批次。因此有时需要进行设备校准。但是:
如果OpenKinect只需要校准,这对于官方SDK来说是一个很大的优势,因为在没有这种需要的情况下更容易分发和安装应用程序。
就个人而言,在使用OpenKinect SDK尝试失败之后,我选择了官方SDK,
更新:截至2012年2月1日,官方SDK已获得商业许可: “此版本的商业许可证授权开发和分发商业应用程序。之前的SDK是测试版,因此仅适用于研究,测试和实验,并且不适合与最终的商业产品一起使用。新许可证将使开发人员能够在Windows平台上使用Kinect for Windows硬件为最终用户客户创建和销售他们的Kinect for Windows应用程序。“ Developer Frequently Asked Questions
答案 1 :(得分:6)
正如Avada Kedavra在他/她answer中所解释的那样,这些是一些有趣的差异:
在我个人看来,开源解决方案和Microsoft SDK之间最显着的区别与骨架跟踪算法严格相关。
虽然开放/免费API和Microsoft SDK都可以有效地提供深度和RGB数据,但实现骨架跟踪功能不仅仅是逆向工程的问题。
为了实现这样的算法,开发人员必须在模式识别和机器学习领域具有很强的能力,我很确定开源社区中可以获得这样的知识。但是,骨干跟踪的实施基于一个经过培训的"算法,需要大量的实验才能收集到大量的数据。然后将这些数据用于训练"算法,可以识别骨骼关节。
获取足够的数据,同时调整并正确使用它们需要大量的时间和金钱。微软的研究人员和开发人员处于最佳状态,只是因为这是他们的工作。
在我之前的经历中,我注意到开源解决方案提供了良好的骨架跟踪功能,但它们与Microsoft提供的SDK不同。
还要记住,Microsoft SDK提供了许多其他功能,如面部识别或联合定位,如果您想快速构建手势GUI,则几个小部件非常有用。
所以我建议的是:如果您正在开发一个只需要深度和/或RGB数据的项目,或者如果您有必要使用Microsoft SDK不支持的编程语言,那么您应该选择开源解决方案。否则,Microsoft SDK将是我的最佳选择。
答案 2 :(得分:3)
我强烈推荐Cinder框架。 (libcinder.org)
如果你使用C ++,它支持OpenNI和Kinect开发。它现在通过这些Cinderblocks支持Kinect SDK 1.7和OpenNI 2:
MS Kinect SDK 1.7(稳定版) https://github.com/BanTheRewind/Cinder-MsKinect
OpenNI 2 / NITE 2.2(alpha) https://github.com/wieden-kennedy/Cinder-OpenNI
两者都可以从boz中进行骨骼跟踪,OpenNI能够同时跟踪多达六个骨架。 OpenNI 2在Kinect上正在快速增长,尽管新Kinect可能会在下个月发布时改变它。但是,基本的基本原则不太可能改变。
最初发布OpenNI的主要缺点是它需要一个全身激活姿势来识别用户,这对许多应用程序来说是一个交易破坏者 - 但是这似乎已在新版本和OpenNI中得到解决2也支持近距离的强大手部跟踪,尽管它最初仍需要焦点手势。如果你在Mac或Linux上工作,它几乎是你唯一的选择。