官方Kinect SDK与开源替代品
他们在哪里不同?
例如,selectlibfreenect或OpenNI + SensorKinect的优势是什么,比官方的SDK,反之亦然?
有什么缺点?
请注意,下面的答案是按date排列的,有些事实在不久的将来可能会过时。 官方Kinect SDK的当前状态是beta 1.00.12。
第一个明显的区别是官方SDK由Microsoft Research团队维护,而OpenKinect是由开源社区维护的开源SDK。 两者都有其优缺点。
- 官方SDK由微软开发,也开发硬件,因此应该知道开源社会必须进行逆向工程的设备的内部信息。 显然这是为了微软的优势。
- 微软正在为这个设备投入大量的资金,我相信他们将会做他们觉得有必要保持他们的SDK的水平。 经济背后有很多优点。
- 另一方面,永远不要低估开源社会的力量:“OpenKinect社区由超过2000名成员为项目贡献自己的时间和代码,我们的成员join了这个项目,其任务是创build最好的应用程序套件对于Kinect来说,OpenKinect是一个真正的“开源”社区!“ – http://openkinect.org/wiki/Main_Page 。
- OpenKinect早在官方SDK发布之前就已经发布了,因为Kinect设备在发布的第一天或第二天就被黑了。 荣誉OpenKinect!
支持的编程语言:
- 官方SDK:使用Microsoft Visual Studio 2010的C ++,C#或Visual Basic。
- OpenKinect:Python,C,C ++,C#,Java,Lisp等等! 显然不需要Visual Studio。
操作系统支持:
- 官方SDK:只安装在Windows 7上。
- OpenKinect:运行在Linux,OS X和Windows上
明显的优势OpenKinect。
执照:
- 官方SDK目前处于testing状态。 SDK是专门为鼓励学术界,研究和发烧友社区进行广泛的探索和实验而开发的。 商业应用程序是不允许的。 但请注意,这可能会在SDK的未来版本中发生变化。 访问常见问题了解更多信息
- OpenKinect似乎是开放的商业用途,但是在线消息人士表示,这可能不是那么简单。 在发布任何商业应用程序之前,我会仔细看看这些条款。 阅读Kinect – 打开硬件项目的许可影响,了解更多信息。
文件和支持:
- 官方SDK:有据可查,提供支持论坛
- OpenKinect:似乎有一个邮件列表,twitter和irc。 但没有官方论坛/ QA? 网站上的文档并不像我希望的那么丰富。
设备校准:
不同的Kinect设备可能会略有不同,这取决于它们生产的批次。因此有时需要进行设备校准。 但:
- 官方的SDK不提供任何校准设置,但我到目前为止不必校准正在工作的设备。 根据我在线阅读的内容(链接丢失),校准参数被写入到kinect设备,所以不需要官方SDK校准。
- OpenKinect具有设备校准function: http ://openkinect.org/wiki/Calibration。 因此我相信如果你使用OpenKinect,你应该校准你的设备。
如果OpenKinect只需要进行校准,这对于官方SDK来说是一个很大的优势,因为在没有这种需求的情况下更容易分发和安装应用程序。
就个人而言,尝试使用OpenKinect SDK失败后,我去了官方的SDK,哪个
- 随机附带驱动程序
- 附带示例和代码,以便于开展业务
- 总而言之:我可以在15分钟左右开始自己的发展。
- 现在,在使用Kinect几个月之后,我不得不说我对提供的API非常满意。 我不能将它与OpenKinect SDK进行比较,因为我实际上从来没有使用它(但也许它没有公平的尝试)。
更新:截至2012年2月1日,官方SDK有一个商业许可证:“此版本的商业许可授权开发和分发商业应用程序。之前的SDK是一个testing版,因此仅适用于研究,testing并且不适合用于最终的商业产品,新的许可证将使开发人员能够在Windows平台上使用Kinect for Windows硬件创build和销售Kinect for Windows应用程序。 开发人员常见问题
正如Avada Kedavra在他的回答中所解释的那样,这些有些不同:
- 支持的操作系统 :您只能在Windows上使用Microsoft SDK,而开源解决scheme通常能够在其他操作系统上运行;
- 编程语言 :开源解决scheme有更多select,而微软只支持C ++和C#(Visual Studio不再支持SDK 2.0);
- 文档和支持 :微软提供了一个很好的论坛和一个很好的文档(有很多样本)。 但有好几种开源解决scheme都有文档logging;
- 许可证 :微软的专有权越来越less,开源越来越less或者越来越免费。 还要考虑到开源的想法有时候被大公司收购,并且变成了一些不太开放的东西。 可能你的情况不会如此,但请记住这个额外的可能性。
我个人认为,开源解决scheme与Microsoft SDK之间最重要的区别是与骨架跟踪algorithm严格相关。
虽然深度和RGB数据可以通过开放/免费API和Microsoft SDK有效提供,但实现骨架跟踪function不仅是逆向工程的问题。
要实现这样一个algorithm,开发者必须在模式识别和机器学习领域具有很强的竞争力,我相信在开源社区中有这样的知识。 但是骨架跟踪的实现基于“训练好的”algorithm,这需要大量的实验来收集非常大量的数据。 这些数据然后用于“训练”algorithm,可以识别骨骼关节。
获取足够的数据,但也要调整和正确使用它们,需要大量的时间和金钱。 微软的研究人员和开发人员处于这种工作的最佳状态,只是因为这是他们的工作。
在我以前的经验中,我注意到开源解决scheme提供了良好的骨架跟踪function,但它们与微软提供的SDK不在同一水平。
还记得微软的SDK提供了很多额外的function,如面部识别或联合定位,如果你想快速构build一个手势GUI,几个小部件非常有用。
所以我build议:如果您正在处理一个只需要深度和/或RGB数据的项目,或者如果您有必要使用Microsoft SDK不支持的编程语言,那么您应该select打开源解决scheme。 否则,Microsoft SDK将是我的最佳select。
我会强烈推荐Cinder框架。 (libcinder.org)
它支持OpenNI和Kinect开发,如果你使用的是C ++。 它现在通过这些Cinderblock支持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
两者都可以进行骨骼跟踪,OpenNI能够同时跟踪多达六个骨架。 OpenNI 2在Kinect上正在快速发展,尽pipe新的Kinect在下个月出现时可能会改变。 然而,基本的基本原则不太可能改变。
OpenNI的最初版本的主要缺点是它需要一个完整的身体激活姿势来识别用户,这对许多应用程序来说是一个交易断路器 – 然而这似乎已经在新版本中得到解决,OpenNI 2也支持可靠的手部追踪近距离,尽pipe它最初还是需要一个焦点手势。 如果你在Mac或Linux上工作,这几乎是你唯一的select。