#java #spring #spring-mvc #opencv
#java #весна #spring-mvc #opencv
Вопрос:
как мне включить путь к набору данных для включения в Net.readfromtensorflow. я продолжаю получать ошибку UnsatisfiedLinkError. набор данных помещен в статический каталог. я цитирую из spring doc «По умолчанию Spring Boot обслуживает статическое содержимое из каталога с именем /static (или / public или /resources или /META-INF /resources) в classpath или из корня ServletContext»
используемый код:
Net net = Dnn.readNetFromTensorflow("/dataset/frozen_east_text_detection.pb");
полная ошибка:
Произошла непредвиденная ошибка (тип = Внутренняя ошибка сервера, статус = 500).
org.opencv.dnn.Dnn.readNetFromTensorflow_1(Ljava/lang /String;)J
java.lang.Ошибка неудовлетворительной ссылки: org.opencv.dnn.Dnn.readNetFromTensorflow_1(Ljava/lang/String;)J
использование spring boot 2.0 spring версии 5.1 opencv 4.0.1
Комментарии:
1. Вы решили проблему? Если да, пожалуйста, поделитесь своим решением. Спасибо!
Ответ №1:
Какую зависимость maven вы используете? Вы можете использовать javacpp-пресеты для opencv (https://github.com/bytedeco/javacpp-presets/tree/master/opencv). Все, что вам нужно сделать, это добавить зависимость maven (https://mvnrepository.com/artifact/org.bytedeco.javacpp-presets/opencv-platform ) в ваш pom. Зависимость включает в себя необходимые системные библиотеки для каждой платформы (Windows, linux, Mac ..). Прежде чем использовать opencv (классы из пространства имен org.opencv package), вы должны вызвать
static {
Loader.load(opencv_java.class);
}
После этого вызова должно быть возможно использовать opencv api. java.lang.UnsatisfiedLinkError
Должно исчезнуть. Эта ошибка не имеет ничего общего с spring. Это проблема с библиотеками, необходимыми для opencv, которые необходимо загрузить. Для загрузки файла east_text_detection.pb вы можете использовать что-то вроде этого:
String location = new File(this.getClass().getClassLoader().getResource("/dataset/frozen_east_text_detection.pb").toURI()).getPath();
Net net = Dnn.readNetFromTensorflow(location);
Для этого требуется каталог ‘dataset’ с файлом .pb. Каталог dataset должен быть расположен непосредственно под каталогом ресурсов.