1

我刚开始在 MacOSX 下使用 JavaCV。我从最新的源代码用 CMake 编译了 OpenCV,并将库所在的路径放入-Djava.library.path=\path\to\librariesJVM 参数中,并在我的项目设置中添加了 JavaCV 库。我还尝试了其他几个 Classpath 的变体。但是当我启动一个简单的项目以从我的网络摄像头中抓取一张图像时,我收到以下错误:

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)
4

3 回答 3

1

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

于 2012-12-01T17:36:59.370 回答
0

VideoInputFrameGrabber 只能在 Windows 下工作。

如 JavaCV 的 README.txt 中所述:

  • videoInputLib包装器并对应VideoInputFrameGrabber于使用 DirectShow 进行捕获,在 Windows 7 下很有用,其中 OpenCV 和 FFmpeg 可能无法使用 Video for Windows 进行捕获(问题 #58)
于 2013-01-29T01:54:31.393 回答
0

我使用 javacpp 和 videoinput 来操作摄像机。当我调用“videoInput.listDevices()”时,出现错误“java.lang.UnsatisfiedLinkError: no jnivideoInputLib in java.library.path”。我通过添加如下代码来解决问题:

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

在调用其他方法之前,您必须先调用“Loader.load”,我不知道为什么。

于 2017-02-16T01:40:19.437 回答