java - 如何将 OpenCV 库添加到动态 Web 项目

标签 java opencv

目前,我正在构建一个使用 Opencv 检测相似图像的 Java 网络项目。但是当我运行时,我总是得到这个错误

java.lang.UnsatisfiedLinkError: Expecting an absolute path of the library: opencv_java249 java.lang.Runtime.load0(Runtime.java:806) java.lang.System.load(System.java:1086) com.hadoop.DriverServlet.doPost(DriverServlet.java:25) javax.servlet.http.HttpServlet.service(HttpServlet.java:650) javax.servlet.http.HttpServlet.service(HttpServlet.java:731) org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)

我也搜索了这个问题,但仍然找不到适合我的案例的任何解决方案。即使我尝试这个http://examples.javacodegeeks.com/java-basics/java-library-path-what-is-it-and-how-to-use/添加到 java.library 路径指向 opencv-249 jar 在 eclipse 中,但仍然没有解决。

谁能帮帮我?提前致谢。

最佳答案

要使用 opencv,您需要 jar 文件和二进制文件。 JAR 文件可以通过本地 maven 存储库或任何其他变体简单地添加。

您需要手动添加和加载的二进制文件。 像这样:

private static void addLibraryPath(String pathToAdd) throws Exception{
    final Field usrPathsField = ClassLoader.class.getDeclaredField("usr_paths");
    usrPathsField.setAccessible(true);

    //get array of paths
    final String[] paths = (String[])usrPathsField.get(null);

    //check if the path to add is already present
    for(String path : paths) {
        if(path.equals(pathToAdd)) {
            return;
        }
    }

    //add the new path
    final String[] newPaths = Arrays.copyOf(paths, paths.length + 1);
    newPaths[newPaths.length-1] = pathToAdd;
    usrPathsField.set(null, newPaths);
}

public void init() {
        String pathToOpenCvDll = "c:\\opencv\\"; //linux path works too
        try {
            addLibraryPath(pathToOpenCvDll);
            System.loadLibrary("opencv_java320");
        } catch (Exception ignored) {
        }
    }
}

关于java - 如何将 OpenCV 库添加到动态 Web 项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31157050/

相关文章:

opencv - uvcvideo : Marking buffer as bad (error bit set)

c++ - 将 unsigned char * 图像转换为 OpenCV Mat 的问题

java - 在eclipse中运行java时出现找不到主类错误

java - 在 JUNIT 中按数据库查询执行组

java - 使用 Java 从列表中选择特定对象

java - ConcurrentHashMap 在values().iterator迭代时出现value为null的情况

java - 尝试打开 Excel 时,样式为 POI "too many different cell format"

c++ - 链接器错误(MEX 找不到 OpenCV 库)

c++ - Opencv2.3 和 Qt Creator 2.4.1 链接器错误

android - 在Android中使用OpenCV录制视频