当前位置: 首页 > news >正文

Mac安装opencvJava踩坑

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 兼容的版本。

http://www.lryc.cn/news/222040.html

相关文章:

  • YOLOv8-Pose推理详解及部署实现
  • django+drf+vue 简单系统搭建 (1) - django创建项目
  • 各种NoSQL数据库
  • 基于8086家具门安全控制系统设计
  • k8s:kubectl 详解
  • 壹基金防灾减灾宣传进社区 提升家庭安全能力
  • 抖音自动发评论软件下载方法与其使用方法与案例分析分享
  • Java代码实现当前时间增加3个月
  • 互联网系统安全(一)
  • C# TabControl实现为每一个TabPage添加关闭按钮
  • Win10系统下torch.cuda.is_available()返回为False的问题解决
  • 零代码编程:用ChatGPT批量将Mp4视频转为Mp3音频
  • 微服务项目,请求从发出到后端处理器的历程
  • pandas教程:String Manipulation 字符串处理和正则表达式re
  • Apache Doris 是什么
  • 【NeurIPS 2020】基于蒙特卡罗树搜索的黑箱优化学习搜索空间划分
  • 面试题:线上MySQL的自增id用尽怎么办?
  • Java集合框架:Collection 与 Map 接口深度解析
  • qt多线程例子,不断输出数字
  • 基于厨师算法的无人机航迹规划-附代码
  • 设计模式的六大原则
  • 原文远知行COO张力加盟逐际动力 自动驾驶进入视觉时代?
  • 【公益案例展】火山引擎公益电子票据服务——连接善意,共创美好
  • postman中文乱码
  • 设计模式简要介绍
  • LeetCode-232. 用栈实现队列(C++)
  • 无人机红外相机的畸变矫正
  • C++编程案例讲解-基于结构体的控制台通讯录管理系统
  • ASP.NETCore6开启文件服务允许通过url访问附件(图片)
  • python爬取Web of science论文信息