1

我正在尝试按照 Greg Borenstein 的“让事物看到”中的步骤进行操作。http://www.amazon.co.uk/Making-Things-See-Processing-MakerBot/dp/1449307078

虽然我以前使用过 Kinect,但我使用的是 Windows SDK,而不是使用它建议的 OpenNI 库。所以我按照建议卸载了 SDK 和设备驱动程序。但是我很难让 OpenNI 与这些示例一起工作。尝试在 Processing (http://www.processing.org/download/) 中运行 c# 示例时,我收到此错误:

UnsatisfiedLinkError: SimpleOpenNI.SimpleOpenNIJNI.swig_module_init()V

其中有以下信息:

无法加载 SimpleOpenNI 库 (SimpleOpenNI32) : java.lang.UnsatisfiedLinkError: C:\Users\Ryan\Documents\Processing\libraries\SimpleOpenNI\library\SimpleOpenNI32.dll: 找不到依赖库 验证您是否正确安装了 SimpleOpenNI。http://code.google.com/p/simple-openni/wiki/Installation 线程“动画线程”中的异常 java.lang.UnsatisfiedLinkError: SimpleOpenNI.SimpleOpenNIJNI.swig_module_init(Native Method) 处 SimpleOpenNI.SimpleOpenNIJNI.(SimpleOpenNIJNI.java:1575) 处 SimpleOpenNI.SimpleOpenNIJNI.swig_module_init()V 处的 SimpleOpenNI.ContextWrapper.(ContextWrapper .java:54) 在 SimpleOpenNI.SimpleOpenNI.(SimpleOpenNI.java:212) 在 DepthImage.setup(DepthImage.java:41) 在 processing.core.PApplet.handleDraw(PApplet.java:2103) 在 processing.core.PGraphicsJava2D。 requestDraw(PGraphicsJava2D.java:190) 在 processing.core.PApplet.run(PApplet.java:2006) 在 java.lang.Thread.run(Thread.java:662)

并且在互联网上搜索了几次之后,我还没有找到解决这个问题的方法。我已经看到它表明我只需要在这里重新启动窗口:http ://code.google.com/p/simple-openni/issues/detail?id=27 虽然尝试了两次,但我仍然有错误。

注意:我宁愿使用 Windows Visual Studio 而不是 Processing,虽然我不确定如何导入库,或者我是否应该引用它。我非常习惯于编码和开发,但不太习惯使用诸如此类的库。

4

1 回答 1

2

我在 WindowsXP 上将 SimpleOpenNI 与 Processing 一起使用,它在我的机器上运行良好。这是我的配置:

WinXP SP3 with OpenNI dev 32bit (OpenNI1.5.4.0,Nite1.5.2.21,avin2 SensorKinect5.1.2.1) and Processing 1.5.1 with SimpleOpenNI 0.20 (also test with 0.27)

AFAIK SimpleOpenNI 使用 JNI 与 OpenNI 库和驱动程序进行通信,因此上述错误可能来自两个地方:

  1. OpenNI 未正确安装
  2. SimpleOpenNI 库未正确安装

检查 OpenNI 是否安装正确的最简单的方法是在它附带的示例上运行,例如NiViewer(应该在 中C:\Program Files\OpenNI\Samples\Bin\Debug)。如果没有运行,则说明 OpenNI 安装有问题。

我注意到 SimpleOpenNI 项目页面上有 Sensor Driver/OpenNI/Nite 安装程序,但我不记得在我的机器上使用过这些安装程序。我已经手动安装了:

  1. OpenNI 32bit 不稳定
  2. Nite 32bit 不稳定
  3. avin2 的兼容 SensorKinect 驱动程序

按上述顺序。尝试卸载/清理然后重新安装并尝试 OpenNI 示例。

如果正确安装了 OpenNI/Nite/SensorKinect 并且您可以运行示例,那么 Java/JNI 方面的问题。检查以下内容:

  1. SimpleOpenNI 文件夹位于%homepath%\My Documents\Processing\libraries
  2. OpenNI 系统变量 ( OPEN_NI_BIN,OPEN_NI_INCLUDE,OPEN_NI_INSTALL_PATH,OPEN_NI_LIB) 在 Windows 的环境变量中设置

您还注意到您宁愿使用 Visual Studio 而不是 Processing。我同意,Processing 并不是最好的 IDE(它针对初学者,并且是最小/简单的 AFAIK)。如果您想在更好的环境中继续使用 Making Things See 中的确切代码,我建议您使用eclipseProclipsing 插件。Eclipse 是一个不错的 IDE(自动完成/重构/等),Proclipsing 可以轻松管理处理项目(包括使用 SimpleOpenNI 等外部库的项目)。

想到的另一件事是将OpenFrameworks 与 VisualStudioofxOpenNI插件一起使用。OpenFrameworks 有点类似于 Processing 并且 ofxOpenNI 包装器有一些不错的特性,但是您可能需要将 Processing/SimpleOpenNI 语法移植到 oF/ofxOpenNI。

就我个人而言,我认为 SimpleOpenNI 非常容易上手(我见过的最好的 OpenNI 包装器),如果您刚开始进行 Kinect 开发并且想要轻松地遵循 Make Things See 示例,那么坚持使用 Processing 可能会更简单(有或没有 Eclipse)和 SimpleOpenNI。取决于你如何解决这个问题:直接使用示例代码或者花费额外的精力来移植它会更简单,但更多地了解 OpenNI 本身的工作原理(没有包装器/“训练轮”)。

我们的想法是以最舒适的方式开始。SimpleOpenNI 确实使事情变得更简单,但如果您不习惯 Processing/Java 并且是一位经验丰富的开发人员,您可能可以使用文档了解如何在 C# 中使用原始 OpenNI API。

如您所见,OpenNI 还附带了 C# 示例。例如C:\Program Files\OpenNI\Samples\SimpleViewer.net. 我建议将 SimpleViewer.net.exe 从obj\x86\Debug文件夹移回obj或更改SAMPLE_XML_FILEMainWindow.cs中的路径

有点题外话:使用桥接库实际上可能同时使用官方的 Kinect SDK 和 OpenNI ,但我自己还没有使用过,所以不能根据经验提供建议。

高温高压

于 2012-10-13T19:27:39.587 回答