У меня есть зависимости от org.bytedeco:opencv:4.1.2-1.5.2
, который в свою очередь добавляется в проект как
<groupId>org.datavec</groupId>
<artifactId>datavec-data-image</artifactId>
<version>${datavec.version}</version>
И для нужд datavec-data-image
open-cv загружается хорошо и все внутренние open-cv действия выполняются.
Затем я бы хотел явно выполнить некоторые open cv. Я использую класс из https://github.com/rostrovsky/pdf-table, который выполняет эту работу:
public class PdfTableReader {
private TableExtractor extractor;
private PdfTableSettings settings;
static {
System.loadLibrary(Core.NATIVE_LIBRARY_NAME);
}
, и он терпит неудачу с
Exception in thread "main" java.lang.UnsatisfiedLinkError: no opencv_java412 in java.library.path
at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1864)
at java.lang.Runtime.loadLibrary0(Runtime.java:870)
at java.lang.System.loadLibrary(System.java:1122)
at pdftable.PdfTableReader.<clinit>(PdfTableReader.java:32)
at pdftable.ExtractSyzlekFromPdf.main(ExtractSyzlekFromPdf.java:12)
Что я должен сделать, чтобы сделать это явным javacv
часть для работы с datavec
кодом изображения без выполнения двойной явной установки open-cv
в какое-либо место на моем p c и явной настройки java.library.path
? По крайней мере, код изображения datavec
получает его как-то без этой явной настройки.
Я также пытался ответить на этот ответ: { ссылка }, но безуспешно (если я правильно понял они используют зависимость, которая доставляет нативные библиотеки кросс-платформенным способом, то есть отгружает все двоичные файлы платформы, а необходимая используется на правильной платформе). Я предполагаю, что должен быть способ сделать java.library.path
динамически обновляемым, если к проекту присоединены собственные двоичные файлы open-cv
, упакованные в зависимости maven. Но как?
Если бы ребята из DL4J могли объяснить, как правильно использовать там часть javacv, это было бы прекрасно.