有没有一种方法可以在maven中为javacv的原生部分设置依赖,而无需手动安装和设置java.library.path?
Is there a way to set up dependency for javacv's native part in maven, without manual installation and setting up java.library.path?
我对 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 操作。
然后,我想明确地执行一些公开的简历。我使用 https://github.com/rostrovsky/pdf-table 中的 class 来做这些事情:
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
安装和设置java.library.path
明确?至少 datavec
图像代码在没有这种显式设置的情况下以某种方式获得了它。
我也尝试跟进这个答案:但没有成功(如果我理解正确,他们使用以跨平台方式运送本机库的依赖项,即运送所有平台二进制文件和需要的一个在正确的平台上使用)。我想如果打包到 maven 依赖项的 open-cv
本机二进制文件附加到项目,应该有一种方法可以使 java.library.path
动态更新。但是怎么办?
如果 DL4J 的人能解释如何正确使用 javacv 部分,那就完美了。
org.opencv
包中的 OpenCV Java API 没有自带加载器,所以库需要通过其他外部工具加载。对于 OpenCV 的 JavaCPP 预设,库和包装器都捆绑在 JAR 文件中,我们可以调用 Loader.load(opencv_java.class)
加载此处记录的所有内容:
https://github.com/bytedeco/javacpp-presets/tree/master/opencv#documentation
JavaCV、Deeplearning4j 和 DataVec 不使用 OpenCV 的 Java API,它们使用 org.bytedeco.opencv
包中的 API ,它会自动加载所有内容,所以他们不需要调用任何东西。
我对 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 操作。
然后,我想明确地执行一些公开的简历。我使用 https://github.com/rostrovsky/pdf-table 中的 class 来做这些事情:
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
安装和设置java.library.path
明确?至少 datavec
图像代码在没有这种显式设置的情况下以某种方式获得了它。
我也尝试跟进这个答案:open-cv
本机二进制文件附加到项目,应该有一种方法可以使 java.library.path
动态更新。但是怎么办?
如果 DL4J 的人能解释如何正确使用 javacv 部分,那就完美了。
org.opencv
包中的 OpenCV Java API 没有自带加载器,所以库需要通过其他外部工具加载。对于 OpenCV 的 JavaCPP 预设,库和包装器都捆绑在 JAR 文件中,我们可以调用 Loader.load(opencv_java.class)
加载此处记录的所有内容:
https://github.com/bytedeco/javacpp-presets/tree/master/opencv#documentation
JavaCV、Deeplearning4j 和 DataVec 不使用 OpenCV 的 Java API,它们使用 org.bytedeco.opencv
包中的 API ,它会自动加载所有内容,所以他们不需要调用任何东西。