ang*_*era 6 java opencv javacv
我正在 Java 中使用 OpenCV(实际上是在 Scala 中)。我正在使用 org.bytedeco 包装器(opencpp 和 javacv),但文档不是很好。
问题是,根据示例,使用两个不同的 API:org.bytedeco.opencv.opencv_core或org.opencv.core
org.bytedeco.opencv.opencv_core工作正常,但org.opencv.core抛出 java.lang.UnsatisfiedLinkError:
An exception or error caused a run to abort: no opencv_java410 in java.library.path
java.lang.UnsatisfiedLinkError: no opencv_java410 in java.library.path
Run Code Online (Sandbox Code Playgroud)
我完全迷失了:
提前致谢。
使用的库: "org.bytedeco" % "javacv-platform" % "1.5.1" 为所有平台导入 lib。
我完全迷失了:
和库是 Java桥接org.bytedeco.opencv.opencv_core库,允许调用 OpenCV 本机库。
Java 库是从 OpenCV 库的 C/C++ 头文件生成的。例如,bytedeco.org网站表明他们的版本使用JavaCPP工具。org.opencv.core
- 为什么有两个不同的 api?
因为有两个小组决定这样做!显然,生成 Java 代码的工作量并不大。
为什么两个小组决定做同样的事情?经过。
该使用哪一个呢?
寻求建议的问题对于 StackOverflow 来说是偏离主题的,所以我不会给出建议。
一个务实的答案是使用适合你的一个,但你也可以尝试找出另一个不适合你的答案。
您也许应该考虑要使用的 OpenCV API 版本,以及相应供应商是否提供该版本的桥接库。
为什么工作
org.opencv.core时会抛出异常?org.bytedeco.opencv.opencv_core
两个版本的库都需要链接到 OpenCV 本机库。org.opencv.core此链接在您的执行平台上不起作用。造成这种情况的可能原因有以下几个:
其中一个opencv库具有该库的嵌入式副本,而另一个则没有。(查看各个 JAR 文件内的内容,并将它们与此问答中有关如何嵌入本机库的内容进行比较:如何将本机库和 JNI 库捆绑到 JAR 中?)
或者,两个 JAR 文件都没有嵌入本机库,但您的执行已经安装了适当版本的库。失败的版本正在寻找名为“opencv_java410”的库。