Простой пример Java 8 opencv UnsatisfiedLinkError - PullRequest
0 голосов
/ 22 июня 2019

Я хотел бы изучить opencv, поэтому я хотел запустить этот пример кода.

Я скачал пакет из opencv 3.4.2, жестко добавленный в intellij, java версии 8. Версия 3.20 работает нормально, нонужна более высокая версия 3.4.2 или выше.Пожалуйста, помогите, я не могу сделать то, что.Это мой код:

public class Main {

    public static void main(String[] args) {
        System.loadLibrary(Core.NATIVE_LIBRARY_NAME);
        System.out.println("Welcome to OpenCV " + Core.VERSION);
        Mat m = new Mat(5, 10, CvType.CV_8UC1, new Scalar(0));
        System.out.println("OpenCV Mat: " + m);
        Mat mr1 = m.row(1);
        mr1.setTo(new Scalar(1));
        Mat mc5 = m.col(5);
        mc5.setTo(new Scalar(5));
        System.out.println("OpenCV Mat data:\n" + m.dump());
    }
}
Exception in thread "main" java.lang.UnsatisfiedLinkError: C:\Work\opencv\opencv\build\java\x64\opencv_java342.dll: Can't find dependent libraries
    at java.base/java.lang.ClassLoader$NativeLibrary.load0(Native Method)
    at java.base/java.lang.ClassLoader$NativeLibrary.load(ClassLoader.java:2430)
    at java.base/java.lang.ClassLoader$NativeLibrary.loadLibrary(ClassLoader.java:2487)
    at java.base/java.lang.ClassLoader.loadLibrary0(ClassLoader.java:2684)
    at java.base/java.lang.ClassLoader.loadLibrary(ClassLoader.java:2649)
    at java.base/java.lang.Runtime.loadLibrary0(Runtime.java:829)
    at java.base/java.lang.System.loadLibrary(System.java:1867)
    at Main.main(Main.java:9)

1 Ответ

1 голос
/ 02 июля 2019

Вам нужно загрузить библиотеку .dll или .so, используя:

System.loadLibrary(Core.NATIVE_LIBRARY_NAME);

Или

System.load(PATH_TO_NATIVE_LIB);

Далее вам нужно добавить зависимость в pom.xml:

<dependency>
    <groupId>org.openpnp</groupId>
    <artifactId>opencv</artifactId>
    <version>3.4.2-1</version>
</dependency>

Версии библиотеки и зависимостей должны быть одинаковыми.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...