我看到很多人向我提出类似的问题,但他们的解决方案并不适合我。这就是我所拥有的:
我下载了最新的OpenCV for Windows(2.4.9)。我把它解压缩到C:\ opencv-249
然后我在IntelliJ中创建了一个新的Maven 3项目。这工作正常,我可以运行编译/包目标等。我可以执行和调试我的程序。这一切都很好。
接下来,我尝试将OpenCV拉入我的测试应用程序,最后得到以下代码:
package com.foo.OpenCVTest;
import org.opencv.core.Core;
import org.opencv.core.Mat;
import org.opencv.core.CvType;
/**
* Created by rick on 5/7/2014.
*/
public class RobotCntrl {
static{ System.loadLibrary(Core.NATIVE_LIBRARY_NAME); }
static public void main(String args[]) {
System.out.println("In main!");
System.out.println("Core Lib: " + Core.NATIVE_LIBRARY_NAME);
Mat m = Mat.eye(3, 3, CvType.CV_8UC1);
System.out.println("m = " + m.dump());
}
}
然后我将本地OpenCV添加到我的pom.xml:
<dependency>
<groupId>org.opencv</groupId>
<artifactId>opencv</artifactId>
<version>2.4.9</version>
<systemPath>${java.home}/../../../../opencv-249/build/java/opencv-249.jar</systemPath>
<scope>system</scope>
</dependency>
我将OpenCV添加为项目库:
我修改了IntelliJ VM选项(编辑配置)以更新java.library.path以指向opencv dll:
当我运行应用程序时,似乎可以正常加载opencv_java249.dll库(它没有抱怨),但对于该行:
Mat m = Mat.eye(3, 3, CvType.CV_8UC1);
它抱怨它无法找到潜在的n_eye()原生函数:
In main!
Exception in thread "main" java.lang.UnsatisfiedLinkError: org.opencv.core.Mat.n_eye(III)J
Core Lib: opencv_java249
at org.opencv.core.Mat.n_eye(Native Method)
at org.opencv.core.Mat.eye(Mat.java:1467)
at com.aether.Robots.RobotCntrl.main(RobotCntrl.java:25)
Process finished with exit code 1
我现在不知所措。它正在加载包装器库,但它无法调用依赖函数。对于以前关于类似问题的问题,当人们更新他们的java.library.path变量时,它往往得到解决,但我的看似正确:
-Djava.library.path = C:\的OpenCV-249 \构建\ 64 \ VC10 \ BIN; C:\的OpenCV-249 \构建\ java中\ 64
或者人们忘记调用System.loadLibrary(),但该调用对我来说是成功的(据我所知)。
有什么想法吗?