dee*_*eem 16 java opencv maven
有没有办法从存储库中获取OpenCV?我应该添加哪个工件pom.xml
?我发现的每个教程都来自'14,看起来有些变化 - 他们说它还没有在官方的Maven存储库中,但我找到了条目:
<!-- https://mvnrepository.com/artifact/nu.pattern/opencv -->
<dependency>
<groupId>nu.pattern</groupId>
<artifactId>opencv</artifactId>
<version>2.4.9-7</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)
可悲的是,我得到了错误
Caused by: java.lang.UnsatisfiedLinkError: no opencv_java249 in java.library.path
Run Code Online (Sandbox Code Playgroud)
我正在使用的时候System.loadLibrary(Core.NATIVE_LIBRARY_NAME)
.我可以添加这个库,使我的项目包含它并"忘记"手动将其添加到类路径吗?
Sac*_*yal 16
这对我有用.
nu.pattern.OpenCV.loadLibrary();
Run Code Online (Sandbox Code Playgroud)
我正在使用以下maven依赖
<dependency>
<groupId>nu.pattern</groupId>
<artifactId>opencv</artifactId>
<version>2.4.9-4</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)
小智 16
在POM文件中添加以下依赖项:
<dependency>
<groupId>org.openpnp</groupId>
<artifactId>opencv</artifactId>
<version>3.2.0-0</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)
并替换以下行:
System.loadLibrary(Core.NATIVE_LIBRARY_NAME)
Run Code Online (Sandbox Code Playgroud)
同
nu.pattern.OpenCV.loadShared();
Run Code Online (Sandbox Code Playgroud)
这应该也解决了WINDOWS中的问题.快乐的编码.
目前还没有正式的方法可以将OpenCV的官方Java绑定用作Maven依赖(正如评论中已经提到的,Maven工件已在#4588中被请求,但仍然无人值守).然而,有三种可能的方法来解决您的问题:
java.lang.UnsatisfiedLinkError
抛出是因为您需要单独安装绑定的二进制文件(即"opencv_java").最有可能的是,非官方工件不包括它们(或者不包括与您的系统兼容的工件).为了构建绑定:
git clone
OpenCV存储库.git checkout
预期的版本(看起来您使用的是2.4.9版本,尽管有更新版本可用)java.library.path
(同样,此变量与系统相关,但可以在运行应用程序时定义).此时您应该准备好使用该工件.另一种方法是使用其他绑定:OpenCV的JavaCPP预设似乎与官方绑定一样好,并且这些预设在maven中注册(包括各种平台的二进制文件!).请记住,API可能不完全相同.
这个解决方案可能听起来太过分了,但它在过去对我来说是合法的.基本上,您可以避免使用绑定:使用 C++实现解决方案,然后通过JNI将其与JVM链接,或者将其作为单独的应用程序,由主应用程序通过系统的其他机制使用(进程生成,I/O通道) ,你的名字).例如,我曾经为特征提取创建了一个服务组件,其他程序将通过ZeroMQ套接字连接到该组件.
小智 6
试试这个,看它是否有效:
nu.pattern.OpenCV.loadShared();
System.loadLibrary(org.opencv.core.Core.NATIVE_LIBRARY_NAME);
更多信息请参见API部分:https://github.com/patternconsulting/opencv
还有2.4.9-7 opencv依赖.