我对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操作。
然后,我想明确地执行一些打开的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
双重安装并设置{ {1}}明确?至少java.library.path
图像代码可以在没有此显式设置的情况下以某种方式获得它。
我也尝试遵循以下答案:https://stackoverflow.com/a/57515132/1759063,但没有成功(如果我理解正确,他们会使用依赖项以跨平台的方式发布本机库,即提供所有平台二进制文件和所需的一种用于正确的平台)。我想如果将打包到Maven依赖项的datavec
本机二进制文件附加到项目,应该有一种方法可以使java.library.path
动态更新。但是如何?
如果DL4J伙计们可以在那里正确解释如何使用javacv部分,那将是完美的。