OpenCV + Java = UnsatisfiedLinkError

efm*_*ano 20 java opencv video-capture unsatisfiedlinkerror

我需要从我的USB网络摄像头捕获视频流,为此我使用Opencv 2.4.6进行Java开发.我按照这里列出的步骤操作

我将"C:\ opencv\build\java\x64"目录添加到我的系统路径中,并将"opencv-246.jar"文件包含在我的ECLIPSE库中.当你运行解释时

import org.opencv.core.Core;
import org.opencv.core.CvType;
import org.opencv.core.Mat;

public class Main {
    public static void main(String[] args) {
        System.loadLibrary(Core.NATIVE_LIBRARY_NAME);
        Mat m  = Mat.eye(3, 3, CvType.CV_8UC1);
        System.out.println("m = " + m.dump());
    }
}
Run Code Online (Sandbox Code Playgroud)

我明白了

m = [1, 0, 0;
  0, 1, 0;
  0, 0, 1]
Run Code Online (Sandbox Code Playgroud)

好的=)

但是当我跑

import org.opencv.highgui.VideoCapture;

public class Main {
    public static void main(String[] args) {
        VideoCapture vc = new VideoCapture(0);
        if(vc.isOpened()){
            System.out.println("Works!");
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我明白了

Exception in thread "main" java.lang.UnsatisfiedLinkError: org.opencv.highgui.VideoCapture.n_VideoCapture(I)J
    at org.opencv.highgui.VideoCapture.n_VideoCapture(Native Method)
    at org.opencv.highgui.VideoCapture.<init>(VideoCapture.java:113)
    at Main.main(Main.java:5)
Run Code Online (Sandbox Code Playgroud)

我添加所有包含的路线:

C:\ OpenCV的\建设\ 64\VC10

一个接一个,但不起作用.

最后,我使用C:\ opencv\build\x64\_vc10创建一个名为OPENCV_DIR的变量,但仍然得到UnsatisfiedLinkError.

请帮我!

ber*_*rak 30

在第二个例子中,你跳过了这一行

 System.loadLibrary(Core.NATIVE_LIBRARY_NAME);
Run Code Online (Sandbox Code Playgroud)

所以opencv libs没有加载,UnsatisfiedLinkError等...

[编辑]:

感谢@Jishnu Prathap突出显示java.library路径问题,如果遇到问题设置,你仍然可以尝试使用java包装器的绝对路径,所以/ dll/dylib就像:

 System.load("/path to/our/java_wrapper");
Run Code Online (Sandbox Code Playgroud)

  • static {System.loadLibrary(Core.NATIVE_LIBRARY_NAME); 确保它加载一次.. (2认同)