我正在尝试按照Greg Borenstein的“Make Things See”中的步骤进行操作。 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
有哪些信息:
几次在网上搜索我还没有找到解决这个问题的方法。我看到它建议我只需要在这里重新启动Windows:http://code.google.com/p/simple-openni/issues/detail?id=27 虽然尝试了两次,但仍然有错误。无法加载SimpleOpenNI库(SimpleOpenNI32): java.lang.UnsatisfiedLinkError中: C:\用户\瑞安\文档\加工\库\ SimpleOpenNI \库\ SimpleOpenNI32.dll: 找不到依赖库验证是否安装了SimpleOpenNI 正确。 http://code.google.com/p/simple-openni/wiki/Installation 线程“动画线程”中的异常java.lang.UnsatisfiedLinkError: SimpleOpenNI.SimpleOpenNIJNI.swig_module_init()V at SimpleOpenNI.SimpleOpenNIJNI.swig_module_init(原生方法)at at SimpleOpenNI.SimpleOpenNIJNI。(SimpleOpenNIJNI.java:1575)at at SimpleOpenNI.ContextWrapper。(ContextWrapper.java:54)at SimpleOpenNI.SimpleOpenNI。(SimpleOpenNI.java:212)at DepthImage.setup(DepthImage.java:41)at processing.core.PApplet.handleDraw(PApplet.java:2103)at processing.core.PGraphicsJava2D.requestDraw(PGraphicsJava2D.java:190) 在processing.core.PApplet.run(PApplet.java:2006)at java.lang.Thread.run(Thread.java:662)
注意:我宁愿使用Windows Visual Studio而不是Processing,但我不确定如何导入库,或者我应该只引用它。我习惯于编码和开发,但不是那么多使用这样的库。
答案 0 :(得分:2)
我在WindowsXP上使用了SimpleOpenNI和Processing,它在我的机器上运行正常。 这是我的配置:
WinXP SP3,OpenNI开发32位(OpenNI1.5.4.0,Nite1.5.2.21,avin2 SensorKinect5.1.2.1)和Processing 1.5.1与SimpleOpenNI 0.20(也用0.27测试)
AFAIK SimpleOpenNI使用JNI与OpenNI库和驱动程序通信,因此上述错误可能来自两个地方:
检查OpenNI是否安装正确的最简单方法是运行随附的样本,例如 NiViewer (应该在C:\Program Files\OpenNI\Samples\Bin\Debug
中)。如果没有运行,这是一个很好的迹象表明OpenNI安装有问题。
我注意到SimpleOpenNI项目页面上有Sensor Driver / OpenNI / Nite安装程序,但我不记得在我的机器上使用它们了。 我手动安装了:
按上述顺序。尝试卸载/清理然后重新安装并尝试OpenNI示例。
如果正确安装了OpenNI / Nite / SensorKinect并且您可以运行示例,那么Java / JNI端就会出现问题。请检查以下内容:
%homepath%\My Documents\Processing\libraries
OPEN_NI_BIN,OPEN_NI_INCLUDE,OPEN_NI_INSTALL_PATH,OPEN_NI_LIB
)在Windows的“环境变量”您还注意到您宁愿使用Visual Studio而不是Processing。我同意,Processing不是最好的IDE(它的目标是初学者,意味着最小/简单的AFAIK)。如果您想在更好的环境中继续使用Make Things See中的确切代码,我建议您使用eclipse和Proclipsing plugin。 Eclipse是一个不错的IDE(自动完成/重构/等),而Proclipsing可以轻松管理Processing项目(包括使用SimpleOpenNI等外部库的项目)。
我想到的另一件事是使用OpenFrameworks with VisualStudio和ofxOpenNI插件。 OpenFrameworks有点类似于Processing,而ofxOpenNI包装器有一些不错的功能,但您可能需要将Processing / SimpleOpenNI语法移植到oF / ofxOpenNI。
就我个人而言,我认为SimpleOpenNI非常容易入手(我见过的最好的OpenNI包装器),如果你刚刚开始使用Kinect开发并希望轻松地遵循Making Things See示例,它可能会更简单地坚持下去处理(有或没有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
或更改MainWindow.cs中SAMPLE_XML_FILE
的路径
有点偏离主题:有可能使用bridge library实际使用官方Kinect SDK和OpenNI,但我还没有自己使用过,所以无法根据经验提供建议。
HTH