Я пытаюсь использовать openCV в своем java-проекте, потому что это отдельный пакет, мне нужно добавить его с помощью файла jar. Я пытаюсь следовать этому руководству, чтобы интегрировать его в IDE Intellij https://medium.com/@aadimator/how-to-set-up-opencv-in-intellij-idea-6eb103c1d45c

Но руководство либо устарело, либо не предназначено для версии openCV, установленной с mac homebrew. В руководстве сказано, что файл jar и собственные библиотеки можно найти в разделе opencv/build/java/.

Но это совсем не похоже на структуру каталогов, которая у меня есть. Самое близкое, что я могу найти, это opencv/4.3.0/share/java

Я попытался добавить оттуда файл jar в свою IDE intellij в качестве модуля, но когда я пытаюсь запустить некоторый тестовый код openCV, я получаю эту ошибку:

Exception in thread "main" java.lang.UnsatisfiedLinkError: 'long org.opencv.core.Mat.n_Mat(int, int, int, double, double, double, double)'
    at org.opencv.core.Mat.n_Mat(Native Method)
    at org.opencv.core.Mat.<init>(Mat.java:77)
    at RGBParser.testOpenCV(RGBParser.java:42)
    at RGBParser.makeSynopsis(RGBParser.java:260)
    at Layout.<init>(Layout.java:94)
    at Main.main(Main.java:3)

Исходя из этой ошибки, я предполагаю, что я неправильно связал собственные расширения, потому что я вообще не добавляю файл jar, компилятор выдает другую ошибку, в которой говорится, что пакет не может быть найден:

Error:(13, 23) java: package org.opencv.core does not exist

Моя цель - запустить код Java, который использует классы openCV, например, в этом фрагменте кода:

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

public static void testOpenCV() {
    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());
}
0
ChaiTea 27 Апр 2020 в 15:03

1 ответ

Добавление System.loadLibrary(Core.NATIVE_LIBRARY_NAME); в мой тестовый код решило эту проблему.

0
ChaiTea 28 Апр 2020 в 02:55