官方Kinect SDK与开源替代品

F. *_* P. 59 kinect

他们在哪里有所不同?

选择libfreenect或OpenNI + SensorKinect有什么好处,例如,官方SDK,反之亦然?

有什么缺点?

Ava*_*vra 57

请注意,以下答案是每个日期,有些事实可能在不久的将来过时.官方Kinect SDK的当前状态是beta 1.00.12.

第一个明显的区别是官方SDK由Microsoft Research团队维护,而OpenKinect是由开源社区维护的开源SDK.两者都有其缺点和优点.

  • 官方SDK由Microsoft开发,它也开发硬件,因此应该知道开源社会必须逆向工程的设备的内部信息.显然这是微软的优势所在.
  • 微软正在为这款设备投入大量资金,我相信他们会做他们觉得有必要保持他们的SDK达到标准.经济背后具有很多优势.
  • 另一方面,永远不要低估开源社会的力量:"OpenKinect社区由超过2000名成员组成,为项目贡献他们的时间和代码.我们的成员加入了这个项目,其使命是创建最好的应用程序套件对于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目前处于测试状态,仅用于测试.SDK专门用于鼓励学术界,研究界和爱好者社区进行广泛的探索和实验.不允许商业申请.但请注意,这可能会在SDK的未来版本中发生变化.有关更多信息,请访问常见问题
  • OpenKinect似乎是开放的商业用途,但在线消息来源称它可能不那么简单.在发布任何商业应用程序之前,我会仔细研究这些条款.阅读Kinect - 开放硬件项目的许可影响以获取更多信息.

文档和支持:

  • 官方SDK:详细记录并提供支持论坛
  • OpenKinect:似乎有一个邮件列表,twitter和irc.但没有官方论坛/ QA?网站上的文档并不像我希望的那样丰富.

设备校准:

不同的Kinect设备可能会略有不同,具体取决于生产它们的批次.因此有时需要进行设备校准.但:

  • 官方SDK不提供任何校准设置,但到目前为止我还没有校准我正在处理的设备.根据我在网上阅读的内容(链接丢失),生产时将校准参数写入kinect设备,因此不需要官方SDK校准.
  • OpenKinect具有设备校准功能:http://openkinect.org/wiki/Calibration .因此,如果您使用OpenKinect,我相信您应该校准您的设备.

如果只对OpenKinect进行校准是正确的,这对于官方SDK来说是一个很大的优势,因为它更容易分发和安装没有这种需要的应用程序.


就个人而言,在使用OpenKinect SDK尝试失败之后,我选择了官方SDK

  1. 配备开箱即用的驱动程序
  2. 附带了示例和代码,以便轻松开展业务
  3. 总而言之:我可以在15分钟左右开始自己的开发.
  4. 现在,在使用Kinect几个月之后,我不得不说我对提供的API非常满意.然而,我不能将它与OpenKinect SDK进行比较,因为我实际上从来没有让它工作(但也许它没有给它一个公平的尝试).

更新:截至2012年2月1日,官方SDK有商业许可证:"此版本的商业许可证授权开发和分发商业应用程序.之前的SDK是测试版,因此仅适用于研究,测试和最终的商业产品不适合使用.新的许可证将使开发人员能够在Windows平台上使用Kinect for Windows硬件为最终用户客户创建和销售他们的Kinect for Windows应用程序." 开发人员常见问题解答

  • 您是否还可以强调在尝试使用OpenKinect SDK时遇到的一些困难?基于功能,设计,易用性和稳定性,您认为OpenKinect在官方SDK方面是否在这方面逊色? (3认同)
  • @VictorT.:我在夏天之前试一试,我不记得失败的细节.我认为这是我未能安装的驱动程序.然而,使用官方的sdk,这只是双击(安装Windows 7后,当然:)). (3认同)

Vit*_*ile 7

正如Avada Kedavra在他/她的回答中所解释的那样,这些是一些有趣的差异:

  • 支持的操作系统:您只能在Windows上使用Microsoft SDK,而开源解决方案通常可以在其他操作系统上运行;
  • 编程语言:您可以选择开源解决方案,而Microsoft只支持C++和C#(SDK 2.0不再支持Visual Basic);
  • 文档和支持:Microsoft提供了一个很好的论坛和完善的文档(包含大量示例); 但有几个开源解决方案有很好的记录;
  • 许可证:微软的专有权越来越少,开源更少或更免费.还要考虑开源思想有时候被大公司收购,并转变为不再开放的东西.可能不会是你的情况,但请记住这种额外的可能性.

在我个人看来,开源解决方案和Microsoft SDK之间最重要的区别与骨架跟踪算法严格相关.

虽然开放/免费API和Microsoft SDK都可以有效地提供深度和RGB数据,但实现骨架跟踪功能不仅仅是逆向工程的问题.

为了实现这样的算法,开发人员必须在模式识别和机器学习领域具有很强的能力,并且我确信在开源社区中可以获得这样的知识.但是骨架跟踪的实现基于"训练"的算法,这需要大量的实验来收集非常大量的数据.然后,这些数据用于"训练"算法,该算法可以识别骨骼关节.

获得足够的数据,但也需要调整和正确使用它们需要大量的时间和金钱.微软的研究人员和开发人员处于最佳状态,只是因为这是他们的工作.

在我以前的经验中,我注意到开源解决方案提供了良好的骨架跟踪功能,但它们与Microsoft提供的SDK不同.

还要记住,Microsoft SDK提供了许多其他功能,如面部识别或联合定位,如果您想快速构建手势GUI,则几个小部件非常有用.

所以我的建议是:如果您正在处理一个只需要深度和/或RGB数据的项目,或者如果您有必要使用Microsoft SDK不支持的编程语言,那么您应该选择开放源解决方案.否则,Microsoft SDK将是我的最佳选择.