当前位置: 首页 > 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 兼容的版本。

相关文章:

  • VS Code Counter统计代码量(vscode扩展工具)
  • linux开机自动挂载目录
  • 怎么学编程效率高,编程练习网站编程软件下载,中文编程开发语言工具下载
  • 高防IP的原理
  • 〔001〕虚幻 UE5 安装教程
  • libwebsockets入门
  • 02|LangChain | 从入门到实战 -六大组件之Models IO
  • C++入门学习(1)命名空间和输入输出
  • 数据结构(c语言版) 队列
  • Docker从入门到上天系列第二篇:传统虚拟机和容器的对比以及Docker的作用以及所解决的问题
  • 《代码整洁之道》读书笔记(一)
  • 数据库基础面试——索引
  • 8.spark自适应查询-AQE之自适应调整Shuffle分区数量
  • 【ES专题】ElasticSearch集群架构剖析
  • 循环生成el-descriptions-item
  • php的引用
  • 【140天】尚学堂高淇Java300集视频精华笔记(86-87)
  • C++类中的特殊成员函数
  • css属性的继承、初识值、计算值、当前值、应用值
  • ES6 ...操作符
  • Git初体验
  • Intervention/image 图片处理扩展包的安装和使用
  • Java,console输出实时的转向GUI textbox
  • Java方法详解
  • js操作时间(持续更新)
  • JWT究竟是什么呢?
  • React-flux杂记
  • Ruby 2.x 源代码分析:扩展 概述
  • 闭包--闭包之tab栏切换(四)
  • 从setTimeout-setInterval看JS线程
  • 函数式编程与面向对象编程[4]:Scala的类型关联Type Alias
  • 解决iview多表头动态更改列元素发生的错误
  • 前端技术周刊 2019-02-11 Serverless
  • 区块链共识机制优缺点对比都是什么
  • 三栏布局总结
  • 深入浏览器事件循环的本质
  • 王永庆:技术创新改变教育未来
  • 我的面试准备过程--容器(更新中)
  • Android开发者必备:推荐一款助力开发的开源APP
  • 阿里云移动端播放器高级功能介绍
  • 曾刷新两项世界纪录,腾讯优图人脸检测算法 DSFD 正式开源 ...
  • # Java NIO(一)FileChannel
  • # Python csv、xlsx、json、二进制(MP3) 文件读写基本使用
  • #LLM入门|Prompt#1.7_文本拓展_Expanding
  • (31)对象的克隆
  • (4.10~4.16)
  • (9)YOLO-Pose:使用对象关键点相似性损失增强多人姿态估计的增强版YOLO
  • (vue)el-checkbox 实现展示区分 label 和 value(展示值与选中获取值需不同)
  • (第8天)保姆级 PL/SQL Developer 安装与配置
  • (多级缓存)缓存同步
  • (翻译)Quartz官方教程——第一课:Quartz入门
  • (附源码)ssm基于web技术的医务志愿者管理系统 毕业设计 100910
  • (十七)devops持续集成开发——使用jenkins流水线pipeline方式发布一个微服务项目
  • (十一)图像的罗伯特梯度锐化
  • (转)详解PHP处理密码的几种方式