来自Maven的Java OpenCV

有没有办法从存储库中获取OpenCV? 我应该将哪个工件添加到pom.xml ? 我发现的每个教程都是从’14开始,看起来好像发生了变化 – 他们说它在官方的Maven存储库里还没有,但是我发现了一个条目:

   nu.pattern opencv 2.4.9-7  

可悲的是,我得到了错误

 Caused by: java.lang.UnsatisfiedLinkError: no opencv_java249 in java.library.path 

当我使用System.loadLibrary(Core.NATIVE_LIBRARY_NAME) 。 我可以添加这个库,使我的项目包含它并“忘记”手动将其添加到类路径吗?

这对我有用。

 nu.pattern.OpenCV.loadLibrary(); 

我正在使用以下maven依赖

  nu.pattern opencv 2.4.9-4  

POM文件中添加以下依赖项:

  org.openpnp opencv 3.2.0-0  

并替换以下行:

 System.loadLibrary(Core.NATIVE_LIBRARY_NAME) 

 nu.pattern.OpenCV.loadShared(); 

这应该也解决了WINDOWS中的问题。 快乐的编码。

目前还没有正式的方法可以将OpenCV的官方Java绑定用作Maven依赖(正如评论中已经提到的,Maven工件已在#4588中被请求,但仍然无人值守)。 尽管如此,有三种可能的方法可以解决您的问题:

  • 抛出了java.lang.UnsatisfiedLinkError ,因为您需要单独安装绑定的二进制文件 (即“opencv_java”)。 最有可能的是,非官方工件不包括它们(或者不包括与您的系统兼容的工件)。 为了构建绑定:

    1. git clone OpenCV存储库。
    2. git checkout预期的版本(看起来你使用的是2.4.9版本,虽然有更新版本可用)
    3. 按照此处的说明构建OpenCV及其Java绑定,从而产生动态链接库(“opencv_java249.dll”,“libopencv_java249.so”或其他内容,具体取决于您的操作系统)。
    4. 将共享库文件复制到java.library.path (同样,此变量与系统相关,但可以在运行应用程序时定义)。 此时您应该准备好使用该工件。
  • 另一种方法是使用其他绑定 : OpenCV的JavaCPP预设似乎与官方绑定一样好,并且这些预设在maven中注册(包括各种平台的二进制文件!)。 请记住,API可能不完全相同。

  • 这个解决方案可能听起来太过分了,但过去它对我来说是合法的。 基本上,您可以避免使用绑定使用 C ++实现解决方案,然后通过JNI将其与JVM链接,或者将其作为单独的应用程序,由主应用程序通过系统的其他机制使用(进程生成,I / O通道) ,你的名字)。 例如,我曾经为特征提取创建了一个服务组件,其他程序将通过ZeroMQ套接字连接到该组件。

试试这个,看它是否有效:

  • nu.pattern.OpenCV.loadShared();
  • 的System.loadLibrary(org.opencv.core.Core.NATIVE_LIBRARY_NAME);

更多信息请参见API部分: https : //github.com/patternconsulting/opencv

还有2.4.9-7 opencv依赖。

只需使用它nu.pattern.OpenCV.loadShared();

用这个静态void方法编写一个类

 class Test { public static void loadOpenCVNativeLibrary() { nu.pattern.OpenCV.loadShared(); } } 

然后在你的应用程序类(使用静态main)中调用它,用于web应用程序(例如spring boot)

 static { Test.loadOpenCVNativeLibrary(); } ... public static void main(String[] args) throws UnknownHostException { } 

对于那些想在MacOs环境中使用OpenCV 3.2的用户,可以使用以下存储库定义:

   kodfarki https://raw.githubusercontent.com/kodfarki/repository/master/   

https://github.com/kodfarki/opencv-example中还有一个示例项目。

要使用此示例项目,您仍需要安装OpenCV二进制文件

brew tap homebrew/science brew install opencv3 --with-java --with-contrib