Mac安装opencvJava踩坑

SpringBoot导入opencv依赖

  1. 先将jar包添加到libraries中
  2. 在resources目录下创建lib文件夹并复制jar包到这里
  3. 添加如下依赖,并刷新maven
xml 复制代码
<dependency>
  <groupId>org.opencv</groupId>
  <artifactId>opencv</artifactId>
  <version>4.8.0</version>
  <scope>system</scope>
  <systemPath>${project.basedir}/src/main/resources/lib/opencv-480.jar</systemPath>
</dependency>
<!--这里我的jar包是opencv-480.jar。所以我的版本就是4.8.0-->

使用homebrew下载opencv

如果需要下载Java的opencvjar包需要更改下面路径中的java选项,把OFF改成ON

/opt/homebrew/Library/Taps/homebrew/homebrew-core/Formula/opencv.rb

最终会在

/opt/homebrew/Cellar/opencv/4.8.0_1/share/java/opencv4/

路径下生成一个jar包和一个dylib文件

这个ajr包需要通过idea添加到项目

这个.dylib文件需要放到Java的环境配置路径中,路径如下(如果不放会出现no opencv_java480 in java.library.path报错)

/Library/Java/Extensions/

jdk在下面的路径中

/Library/Java/JavaVirtualMachines/

jdk版本错误更改

类文件具有错误的版本 63.0, 应为 52.0

报错

java: 无法访问 org.opencv.face.LBPHFaceRecognizer

错误的类文件: /Users/xxx/opencv-4.7.0/build/bin/opencv-470.jar!/org/opencv/face/LBPHFaceRecognizer.class

类文件具有错误的版本 63.0, 应为 52.0

请删除该文件或确保该文件位于正确的类路径子目录中。

解决

将 opencv-470.jar 使用 Java8 重新编译打包。

要将整个 opencv-470.jar JAR 文件的版本设置为 JDK 8 兼容的版本,您可以使用以下步骤:

  1. 在您的计算机上安装 JDK 8 或更高版本,并将其配置为默认的 Java 版本。

  2. 使用 jar 命令解压 opencv-470.jar JAR 文件。在命令行中,切换到包含 opencv-470.jar 的目录,并运行以下命令:

    jar xf opencv-470.jar

    这将会在当前目录下创建一个名为 org 的目录,其中包含 opencv 目录和所有的类文件。

  3. 使用 javac 命令编译所有的类文件,并将目标版本设置为 JDK 8。在命令行中,切换到包含 org 目录的父目录,并运行以下命令:

    javac -source 8 -target 8 -cp opencv-470.jar org/opencv/**/*.java

    这将会使用 JDK 8 编译器编译 opencv 包中的所有 Java 源代码,并将目标版本设置为 JDK 8。

  4. 使用 jar 命令重新打包所有的类文件为 opencv-470.jar JAR 文件。在命令行中,切换到包含 org 目录的父目录,并运行以下命令:

    `jar cf opencv-470.jar org

    这将会重新打包所有的类文件,并将它们放回 opencv-470.jar JAR 文件中。

  5. 最后,您可以使用 javap 命令检查 opencv-470.jar JAR 文件的版本是否已更新为 major version: 52。在命令行中,切换到包含 opencv-470.jar 的目录,并运行以下命令:

    `javap -verbose -classpath opencv-470.jar org.opencv.core.Core

    其中,org.opencv.core.Core 是任意一个在 opencv-470.jar 中的类。如果输出中的 major version52,则表示该 JAR 文件已成功转换为 JDK 8 兼容的版本。

相关推荐
TT哇1 小时前
【Java EE初阶】计算机是如何⼯作的
java·redis·java-ee
Fireworkitte7 小时前
Apache POI 详解 - Java 操作 Excel/Word/PPT
java·apache·excel
weixin-a153003083167 小时前
【playwright篇】教程(十七)[html元素知识]
java·前端·html
DCTANT8 小时前
【原创】国产化适配-全量迁移MySQL数据到OpenGauss数据库
java·数据库·spring boot·mysql·opengauss
Touper.8 小时前
SpringBoot -- 自动配置原理
java·spring boot·后端
黄雪超8 小时前
JVM——函数式语法糖:如何使用Function、Stream来编写函数式程序?
java·开发语言·jvm
ThetaarSofVenice8 小时前
对象的finalization机制Test
java·开发语言·jvm
望获linux10 小时前
【实时Linux实战系列】CPU 隔离与屏蔽技术
java·linux·运维·服务器·操作系统·开源软件·嵌入式软件
JosieBook10 小时前
【Java编程动手学】使用IDEA创建第一个HelloJava程序
java·开发语言·intellij-idea
Thomas_YXQ10 小时前
Unity3D DOTS场景流式加载技术
java·开发语言·unity