При выполнении кода из туториала:
static{ System.loadLibrary(Core.NATIVE_LIBRARY_NAME); }
public static void main(String[] args) {
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: no opencv_java410 in java.library.path:
Кроме всего прочего, установил OpenCV последней версии для Windovs, в системной переменной среды Path прописал путь к этой папке по мануалу одной из статей на хабре:
C:\Java_Projects\opencv\build\x64\vc15\bin
Пролистал ответы(1, 2) на данную ошибку, но решения не нашел.
Вопроса два:
1) Почему он пытается найти версию файла 410, если у меня стоит openCV, в котором версия данного файла 411. (Может быть из-за зависимости в pom, но там прописана самая свежая)
2) Необходимо ли в переменой PAth (или где в другом месте) прописывать путь до файла с версией 411, т.к. он лежит в папке: C:\Java_Projects\opencv\build\java\x64
?
P.S. На второй вопрос понимаю, что необходимо, но хочу услышать правильный ответ на вопрос, где.
pom.xml:
<dependency>
<groupId>org.bytedeco</groupId>
<artifactId>javacv-platform</artifactId>
<version>1.5.1</version>
</dependency>
UPD:
Core.NATIVE_LIBRARY_NAME
Возвращает как раз opencv_java410, но тогда не совсем ясно, что делать. Загружать системную библиотеку по имени *411, или же ставить OpenCV более старой версии, в которой есть 410 версия?
Решение, которое сработало, но я не до конца уверен, что оно верное, это в параметрах запуска прописать путь до 411 библиотеки:
-Djava.library.path="C:\Java_Projects\opencv\build\java\x64"
В этой папке переименовать 411 библиотеку в 410, которую ищет. Тогда код запускается и работает, но я не думаю - что это верный вариант. Хотелось бы узнать правильный ответ.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Почему "sconcat(s)" в отдельности не работает а вот при присваивании к новой String или сразу в sout - работает? Я знаю что String это Immutable класс, и по идее...
Каким образом можно программно создать новый java класс? И можно ли вообще?
Почему в строке с комментарием не дает ошибку компиляции? Пробовал с другими ссылочными типами - там все нормально, ошибка компиляции, а в случае...