Mac安装opencvJava踩坑

本文介绍了如何在SpringBoot项目中导入OpenCV库,包括通过Maven系统路径添加本地jar包,以及使用Homebrew下载Java版本的opencv并解决JDK8兼容性问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

SpringBoot导入opencv依赖

  1. 先将jar包添加到libraries中
  2. 在resources目录下创建lib文件夹并复制jar包到这里
  3. 添加如下依赖,并刷新maven
<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 兼容的版本。

### 配置和使用OpenCVJava进行图像处理开发 #### 1. 下载并安装OpenCV 为了在 Mac 上使用 OpenCV 进行 Java 开发,首先需要下载适合 macOSOpenCV 版本。可以从官方网站获取最新版本的预编译二进制文件[^1]。 ```bash brew install opencv ``` 这会自动安装适用于 macOSOpenCV 库及其依赖项。 #### 2. 设置环境变量 完成安装后,需设置 `JAVA_HOME` 和 `DYLD_LIBRARY_PATH` 环境变量以便于 JVM 找到本地库: ```bash export JAVA_HOME=$(/usr/libexec/java_home) export DYLD_LIBRARY_PATH=/usr/local/Cellar/opencv/<version>/lib:$DYLD_LIBRARY_PATH ``` 其中 `<version>` 是通过 Homebrew 安装的具体 OpenCV 版本号。 #### 3. 创建 Maven 或 Gradle 项目结构 建议采用构建工具管理依赖关系。这里以 Maven 为例,在项目的 pom.xml 文件中加入如下依赖声明: ```xml <dependency> <groupId>org.openpnp</groupId> <artifactId>opencv</artifactId> <version>4.x.y</version> </dependency> ``` 注意替换为实际使用的 OpenCV 版本号。 #### 4. 编写简单的测试程序验证配置是否成功 创建一个新的 Java 类,并尝试加载一幅图片转换成灰度图再显示出来作为初步测试: ```java import org.opencv.core.Core; import org.opencv.core.Mat; import org.opencv.imgcodecs.Imgcodecs; import org.opencv.imgproc.Imgproc; public class TestImageProcessing { static { System.loadLibrary(Core.NATIVE_LIBRARY_NAME); } public static void main(String[] args) { Mat src = Imgcodecs.imread("/path/to/image.jpg"); Mat grayMat = new Mat(); // 将彩色图像转为灰色 Imgproc.cvtColor(src, grayMat, Imgproc.COLOR_BGR2GRAY); Imgcodecs.imwrite("/path/to/output_gray_image.png", grayMat); System.out.println("Image processed successfully."); } } ``` 上述代码展示了如何读取一张照片、将其变为灰阶模式后再保存下来[^2]。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值