2012-02-04 70 views
1

我刚刚在MacOSX下开始使用JavaCV。我使用最新源代码的CMake编译OpenCV,并将库的路径放入-Djava.library.path=\path\to\libraries JVM参数中,并在项目设置中添加了JavaCV库。我还尝试了其他几种Classpath的变体。但是,当我推出一个简单的项目,只是抓住我获得以下错误,从我的摄像头一个图像:Netbeans中的OpenCV类路径

Exception in thread "Thread-3" java.lang.UnsatisfiedLinkError: no jnivideoInputLib in java.library.path 
    at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1758) 
    at java.lang.Runtime.loadLibrary0(Runtime.java:823) 
    at java.lang.System.loadLibrary(System.java:1045) 
    at com.googlecode.javacpp.Loader.load(Loader.java:358) 
    at com.googlecode.javacpp.Loader.load(Loader.java:285) 
    at com.googlecode.javacv.cpp.videoInputLib.<clinit>(videoInputLib.java:80) 
    at java.lang.Class.forName0(Native Method) 
    at java.lang.Class.forName(Class.java:169) 
    at com.googlecode.javacpp.Loader.load(Loader.java:305) 
    at com.googlecode.javacpp.Loader.load(Loader.java:285) 
    at com.googlecode.javacv.cpp.videoInputLib$videoInput.<clinit>(videoInputLib.java:192) 
    at com.googlecode.javacv.VideoInputFrameGrabber.start(VideoInputFrameGrabber.java:89) 
    at webcampong.Grabber.run(Grabber.java:35) 
    at java.lang.Thread.run(Thread.java:680) 
+0

也许这样? http://stackoverflow.com/questions/2550571/loading-jni-lib-on-mac-os-x – Bill 2012-02-05 06:09:52

+0

不,我已经试过了。 W/Windows和Linux它工作正常。但是因为我是马科斯新手,我不确定我是否以正确的方式编译了这些库。有人可以告诉我编译后得到的文件是怎么样的?我只在/ lib文件夹中得到一堆dylib文件cv.so文件。在你发布的问题中的jni文件arent there.maybe我不看在正确的地方,或他们不是由海湾合作委员会在所有 – m0rth1um 2012-02-08 15:23:47

回答

1

这是由于你的OpenCV和javaCV库的兼容性问题。 尝试下载兼容的openCV库(包含bin文件夹)。

0

VideoInputFrameGrabber仅在Windows下工作。

正如JavaCV的README.txt文件规定:

  • videoInputLib包装以及相应的VideoInputFrameGrabber使用Windows 7下的DirectShow,有效捕捉到其中的OpenCV和FFmpeg的可能无法使用Windows视频捕捉(问题#58)
0

我使用javacpp和videoinput来操作摄像头。当我调用'videoInput.listDevices()'时,出现'java.lang.UnsatisfiedLinkError:java.library.path'中没有jnivideoInputLib的错误。

org.bytedeco.javacpp.Loader.load(org.bytedeco.javacpp.opencv_highgui.class); 
System.out.println(videoInput.listDevices()); 

必须调用“Loader.load方法”先调用其他方法之前,我不知道为什么: 我加入的代码一样解决问题。