【问题标题】:OpenCV Java bindings link error in EclipseEclipse 中的 OpenCV Java 绑定链接错误
【发布时间】:2019-01-19 13:55:54
【问题描述】:

在Eclipse(Java10、MacOS Sierra)中使用java + opencv运行我的项目时出现以下错误:

java.lang.UnsatisfiedLinkError: org.opencv.core.Mat.n_Mat()J
at org.opencv.core.Mat.n_Mat(Native Method) ~[opencv-342.jar:unknown]
at org.opencv.core.Mat.<init>(Mat.java:26) ~[opencv-342.jar:unknown]
at org.opencv.core.MatOfByte.<init>(MatOfByte.java:12) ~[opencv-342.jar:unknown]
at de.mbs.docscanner.scan.PrepareImageService.prepare(PrepareImageService.java:39) ~[classes/:na]

我的设置:

  1. 使用 Homebrew 从 Source 构建 OpenCV 以启用 java 绑定
  2. 将生成的 jar 与 mvn install 插件放在我的本地 maven 存储库中
  3. 设置 Spring Boot 项目并将“我的”opencv 版本添加为 maven 依赖项
  4. 在 Eclipse 中导入 maven 项目
  5. 在运行/调试设置中将 java.library.path 设置为 /usr/local/Cellar/opencv/3.4.2/share/OpenCV/java

在 cmdline 上构建 maven 并运行项目

java -Djava.library.path=/usr/local/Cellar/opencv/3.4.2/share/OpenCV/java -jar target/docscanner-0.0.1-SNAPSHOT.jar

工作正常,仅在从 Eclipse 运行时才会出现问题。 Spring boot app start 显示没有问题(Tomcat based web app),执行下面代码时报错。

代码部分:

@Service
public class PrepareImageService {

    static {
        System.loadLibrary(Core.NATIVE_LIBRARY_NAME);
    }

    public ScanResult prepare(InputStream input, MediaType mediaType) throws IOException {

        ScanResult scanResult = new ScanResult();
        scanResult.setContentType(mediaType);
        scanResult.getImages().put(IMG_TYPE.ORIGINAL, StreamUtils.copyToByteArray(input));
        MatOfByte inputBuffer = new MatOfByte(scanResult.getImages().get(IMG_TYPE.ORIGINAL));
        Mat orig = Imgcodecs.imdecode(inputBuffer,    Imgcodecs.CV_LOAD_IMAGE_UNCHANGED);
        // ... skipped
        return scanResult;
    }
}

【问题讨论】:

标签: java eclipse maven opencv


【解决方案1】:

运行 Native 库时,需要配置库的位置。在这种情况下,您需要 java 包装器(jar 和 dylib)和 opencv 库。

-Djava.library.path=/usr/local/Cellar/opencv/4.1.1_2/share/java/opencv4:/usr/local/Cellar/opencv/4.1.1_2/lib

根据 opencv 的安装方式,路径可能不同。但是你需要两个文件夹:java shared lib 和 opencv lib。

【讨论】:

    猜你喜欢
    • 2016-04-21
    • 2016-06-02
    • 2010-10-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多