Я пытаюсь использовать 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());
}
1 ответ
Добавление System.loadLibrary(Core.NATIVE_LIBRARY_NAME);
в мой тестовый код решило эту проблему.
Похожие вопросы
Новые вопросы
java
Java — это высокоуровневый объектно-ориентированный язык программирования. Используйте этот тег, если у вас возникли проблемы с использованием или пониманием самого языка. Этот тег часто используется вместе с другими тегами для библиотек и/или фреймворков, используемых разработчиками Java.