java - 如何在 Maven 项目中使用 OpenCV 构建(opencv 和 opencv_contrib)

标签 java opencv jar m2eclipse

我编译了 openCV 和 OpenCV_contrib 库,并在 build/lib/ 中生成了 build/bin/opencv-411.jar 和库 .so。现在我想知道如何将这些添加到我的 Maven 项目中?

我正在使用Maven repository但贡献模块不可用。

我尝试将 jar 包含为依赖项,例如 here与:

<dependency>
    <groupId>org.opencv</groupId>
    <artifactId>opencv-411</artifactId>
    <version>4.1.0</version> 
    <scope>system</scope>
    <systemPath>${resourcesfolder}/opencv-411.jar</systemPath>
</dependency>

当我启动 clean javafx:compile 时,我没有收到任何错误,但是当我启动 clean javafx:ru​​n 时,出现了很多 OpenCV 错误:

[错误]编译错误:

[INFO] -------------------------------------------------------------
[ERROR] /home/.../src/main/java/model/VideoModel.java:[3,23] package org.opencv.core does not exist
[ERROR] /home/.../src/main/java/model/VideoModel.java:[4,23] package org.opencv.core does not exist
[ERROR] /home/.../src/main/java/model/VideoModel.java:[5,26] package org.opencv.videoio does not exist
[ERROR] /home/.../src/main/java/model/VideoModel.java:[6,26] package org.opencv.videoio does not exist
[ERROR] /home/.../src/main/java/model/VideoModel.java:[25,17] cannot find symbol
     symbol:   class VideoCapture
     location: class model.VideoModel
[ERROR] /home/.../src/main/java/model/VideoModel.java:[26,17] cannot find symbol
     symbol:   class Mat

我还查看了that但他在远程存储库中部署了包含可执行文件和库的新 jar。有趣的部分是 jar 创建,因此我尝试对 opencv-411.jarlib/ 文件夹执行相同的操作:

cp opencv-411.jar opencv-411-new.jar
jar -uvf opencv-411-new.jar lib/

并保留上述依赖关系,但引发了相同的错误...

我应该做什么?

最佳答案

感谢这些答案,我找到了将 OpenCV jar 和 libs 包含到 Maven 的解决方案:

  • 使用以下命令将 jar 安装到 Maven 本地存储库中:
mvn install:install-file -Dfile=/home/.../src/main/resources/opencv.jar -DgroupId=org -DartifactId=opencv -Dversion=4.1.1 -Dpackaging=jar
  • 在 pom.xml 中创建依赖项:
<dependency> 
 <groupId>org</groupId> 
 <artifactId>opencv</artifactId>
 <version>4.1.1</version>  
</dependency> 

现在 jar 已包含在内,我们必须以某种方式添加 OpenCV 库。

只需将库加载到您的应用程序中即可:

System.load("/path/to/lib/libopencv_java411.so");

对于UI测试,由于maven-surefire-plugin使用特殊的JVM,您必须将lib文件夹指定到java.library.path:

<plugin>
 <groupId>org.apache.maven.plugins</groupId>
 <artifactId>maven-surefire-plugin</artifactId>
 <version>2.22.2</version>
 <configuration>
  <argLine>-Djava.library.path=${project.build.outputDirectory}/lib</argLine>
 </configuration>
</plugin>

如果您有更好的解决方案或更正需要添加,请随时编辑。

关于java - 如何在 Maven 项目中使用 OpenCV 构建(opencv 和 opencv_contrib),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57160735/

相关文章:

java - 无法看到保存的图像,因为它在 imageview 中看起来

java - 如何测试字符串中某些点是否包含数字

opencv - 图像中的圆圈检测

python - 如何从二值图像中找到最大的白色像素区域

java - 外部 JAR 上的变量未更新

java - 运行.jar文件时出现NoClassDefFoundError

java - 为什么 Java 变量无法在 IF 语句内解析?

java - Eclipse Luna 的 jigloo 插件

python - multiprocessing.pool.RemoteTraceback,TypeError : Incorrect type of self (must be 'Feature2D' or its derivative)

java - 有没有办法可以在执行时覆盖 JRE 中的文件?也就是说,不编辑JRE?