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

相关文章:

Mac安装opencvJava踩坑

SpringBoot导入opencv依赖 先将jar包添加到libraries中在resources目录下创建lib文件夹并复制jar包到这里添加如下依赖&#xff0c;并刷新maven <dependency><groupId>org.opencv</groupId><artifactId>opencv</artifactId><version>4.8.0…...

YOLOv8-Pose推理详解及部署实现

目录 前言一、YOLOv8-Pose推理(Python)1. YOLOv8-Pose预测2. YOLOv8-Pose预处理3. YOLOv8-Pose后处理4. YOLOv8-Pose推理 二、YOLOv8-Pose推理(C)1. ONNX导出2. YOLOv8-Pose预处理3. YOLOv8-Pose后处理4. YOLOv8-Pose推理 三、YOLOv8-Pose部署1. 源码下载2. 环境配置2.1 配置CM…...

django+drf+vue 简单系统搭建 (1) - django创建项目

本系列文章为了记录自己第一个系统生成过程&#xff0c;主要使用django,drf,vue。本人非专业人士&#xff0c;此文只为记录学习&#xff0c;若有部分描述不够准确的地方&#xff0c;烦请指正。 建立这个系统的原因是因为&#xff0c;在生活中&#xff0c;很多觉得可以一两行代码…...

各种NoSQL数据库

NoSQL数据库是一类非关系型数据库&#xff0c;它们在数据存储和检索方面与传统的关系型数据库不同。不同类型的NoSQL数据库适用于不同的使用场景&#xff0c;因为它们具有各自的特点。以下是一些主要类型的NoSQL数据库及其特性和使用场景&#xff1a; 键值存储数据库 代表性数据…...

基于8086家具门安全控制系统设计

**单片机设计介绍&#xff0c;基于8086家具门安全控制系统设计 文章目录 一 概要二、功能设计设计思路 三、 软件设计原理图 五、 程序六、 文章目录 一 概要 # 8086家具门安全控制系统设计介绍 8086家具门安全控制系统是一种用于保护家具和保证室内安全的系统。该系统基于808…...

k8s:kubectl 详解

目录 1 kubectl 2 基本信息查看 2.1 查看 master 节点状态 2.2 查看命名空间 2.3 查看default命名空间的所有资源 2.4 创建命名空间app 2.5 删除命名空间app 2.6 在命名空间kube-public 创建副本控制器&#xff08;deployment&#xff09;来启动Pod&#xff08;nginx-wl…...

壹基金防灾减灾宣传进社区 提升家庭安全能力

11月7日&#xff0c;瑞金市赋能济困公益协会、蓝天救援队等联合沙洲坝镇红都新城社区一起走进梦想家园小区&#xff0c;开展家庭安全计划社区活动包挑战赛活动暨壹基金安全家园项目防灾减灾宣传社区行活动。 活动中&#xff0c;志愿者针对从洪涝灾害、风灾、火灾、雪灾、地质灾…...

抖音自动发评论软件下载方法与其使用方法与案例分析分享

先来看成果&#xff0c;↑↑需要的同学可看我名字↖↖↖↖↖&#xff0c;或评论888无偿分享 一、引言 亲爱的知友们&#xff0c;你是否在抖音上遇到过这样的情况&#xff1a;看到一个非常棒的短视频&#xff0c;但想要表达的评论太多&#xff0c;手动逐一回复既耗时又费力。那…...

Java代码实现当前时间增加3个月

import java.time.LocalDate; import java.time.temporal.TemporalAdjusters;public class DateUtils {public static LocalDate addThreeMonths(LocalDate date) {// 使用TemporalAdjusters类将日期增加3个月return date.plusMonths(3).with(TemporalAdjusters.lastDayOfMonth…...

互联网系统安全(一)

目录 一、互联网系统安全概述 互联网系统的安全性为什么如此重要 互联网系统中的典型威胁 二、 威胁分析 2.1、跨站脚本&#xff08;XSS&#xff09; 2.1.1、跨站脚本 &#xff08;XSS&#xff09;攻击 2.1.2、SQL注入攻击&#xff1a; 2.2、跨站请求伪造&#xff08;C…...

C# TabControl实现为每一个TabPage添加关闭按钮

默认情况下TabControl是无法通过界面关闭TabPage的 有些情况下我们需要手动关闭任意一个TabPage&#xff0c;如下图所示 TabControl控件自带属性是无法满足以上需求&#xff0c;下面简单介绍实现过程 1、首先需要对TabPage进行重绘&#xff0c;其目的是为了在TabPage上画出…...

Win10系统下torch.cuda.is_available()返回为False的问题解决

Q: Win10系统下torch.cuda.is_available()返回为False (l2) D:\opt\l2>pythonPython 3.10.12 | packaged by conda-forge | (main, Jun 23 2023, 22:34:57) [MSC v.1936 64 bit (AMD64)] on win32Type "help", "copyright", "credits" or &q…...

零代码编程:用ChatGPT批量将Mp4视频转为Mp3音频

文件夹中有很多mp4视频文件&#xff0c;如何利用ChatGPT来全部转换为mp3音频呢&#xff1f; 在ChatGPT中输入提示词&#xff1a; 你是一个Python编程专家&#xff0c;要完成一个批量将Mp4视频转为Mp3音频的任务&#xff0c;具体步骤如下&#xff1a; 打开文件夹&#xff1a;…...

微服务项目,请求从发出到后端处理器的历程

点击登录按钮,发出 http://localhost:8803/service_6001/admin/login/in请求,这是一个由nginx配置的前端项目 查看配置文件,该条请求会被映射形成对http://localhost:51603/admin/login/in的post请求 upstream heima-admin-gateway {server localhost:51603; } server {liste…...

pandas教程:String Manipulation 字符串处理和正则表达式re

文章目录 7.3 String Manipulation&#xff08;字符串处理&#xff09;1 String Object Methods&#xff08;字符串对象方法&#xff09;2 Regular Expressions&#xff08;正则表达式&#xff09;3 Vectorized String Functions in pandas&#xff08;pandas中的字符串向量化函…...

Apache Doris 是什么

Apache Doris 是一个开源的、基于MPP&#xff08;Massively Parallel Processing&#xff09;架构的SQL数据仓库。它旨在提供高性能、高可靠性的数据分析服务&#xff0c;特别适合处理大规模数据集。 Doris 的主要特点包括&#xff1a; 高性能&#xff1a;通过MPP架构&#xf…...

【NeurIPS 2020】基于蒙特卡罗树搜索的黑箱优化学习搜索空间划分

Learning Search Space Partition for Black-box Optimization using Monte Carlo Tree Search 目标&#xff1a;从采样&#xff08;Dt ∩ ΩA&#xff09;中学习一个边界&#xff0c;从而最大化两方的差异 先使用Kmeans在特征向量上&#xff08; [x, f(x)] &#xff09;聚类…...

面试题:线上MySQL的自增id用尽怎么办?

文章目录 前言表定义自增值idInnoDB系统自增row_idXidInnodb trx_id InnoDB数据可见性的核心思想为什么要加248&#xff1f;为何只读事务不分配trx_id&#xff1f;thread_id 总结 前言 MySQL的自增id都定义了初始值&#xff0c;然后不断加步长。虽然自然数没有上限&#xff0c…...

Java集合框架:Collection 与 Map 接口深度解析

Java的集合框架提供了丰富的工具和数据结构&#xff0c;其中 Collection 和 Map 接口是这个框架的核心。这两个接口分别用于处理一组对象和键值对的映射关系&#xff0c;是Java编程中不可或缺的部分。让我们深入挖掘这两个接口的特性以及它们的实际应用场景。 1. Collection 接…...

qt多线程例子,不断输出数字

dialog.h #include "dialog.h" #include "ui_dialog.h"Dialog::Dialog(QWidget *parent) :QDialog(parent),ui(new Ui::Dialog) {ui->setupUi(this); }Dialog::~Dialog() {delete ui; }// 启动线程按钮 void Dialog::on_startButton_clicked() {//conn…...

C++初阶-list的底层

目录 1.std::list实现的所有代码 2.list的简单介绍 2.1实现list的类 2.2_list_iterator的实现 2.2.1_list_iterator实现的原因和好处 2.2.2_list_iterator实现 2.3_list_node的实现 2.3.1. 避免递归的模板依赖 2.3.2. 内存布局一致性 2.3.3. 类型安全的替代方案 2.3.…...

CVPR 2025 MIMO: 支持视觉指代和像素grounding 的医学视觉语言模型

CVPR 2025 | MIMO&#xff1a;支持视觉指代和像素对齐的医学视觉语言模型 论文信息 标题&#xff1a;MIMO: A medical vision language model with visual referring multimodal input and pixel grounding multimodal output作者&#xff1a;Yanyuan Chen, Dexuan Xu, Yu Hu…...

Swift 协议扩展精进之路:解决 CoreData 托管实体子类的类型不匹配问题(下)

概述 在 Swift 开发语言中&#xff0c;各位秃头小码农们可以充分利用语法本身所带来的便利去劈荆斩棘。我们还可以恣意利用泛型、协议关联类型和协议扩展来进一步简化和优化我们复杂的代码需求。 不过&#xff0c;在涉及到多个子类派生于基类进行多态模拟的场景下&#xff0c;…...

高危文件识别的常用算法:原理、应用与企业场景

高危文件识别的常用算法&#xff1a;原理、应用与企业场景 高危文件识别旨在检测可能导致安全威胁的文件&#xff0c;如包含恶意代码、敏感数据或欺诈内容的文档&#xff0c;在企业协同办公环境中&#xff08;如Teams、Google Workspace&#xff09;尤为重要。结合大模型技术&…...

BCS 2025|百度副总裁陈洋:智能体在安全领域的应用实践

6月5日&#xff0c;2025全球数字经济大会数字安全主论坛暨北京网络安全大会在国家会议中心隆重开幕。百度副总裁陈洋受邀出席&#xff0c;并作《智能体在安全领域的应用实践》主题演讲&#xff0c;分享了在智能体在安全领域的突破性实践。他指出&#xff0c;百度通过将安全能力…...

IT供电系统绝缘监测及故障定位解决方案

随着新能源的快速发展&#xff0c;光伏电站、储能系统及充电设备已广泛应用于现代能源网络。在光伏领域&#xff0c;IT供电系统凭借其持续供电性好、安全性高等优势成为光伏首选&#xff0c;但在长期运行中&#xff0c;例如老化、潮湿、隐裂、机械损伤等问题会影响光伏板绝缘层…...

AI书签管理工具开发全记录(十九):嵌入资源处理

1.前言 &#x1f4dd; 在上一篇文章中&#xff0c;我们完成了书签的导入导出功能。本篇文章我们研究如何处理嵌入资源&#xff0c;方便后续将资源打包到一个可执行文件中。 2.embed介绍 &#x1f3af; Go 1.16 引入了革命性的 embed 包&#xff0c;彻底改变了静态资源管理的…...

Yolov8 目标检测蒸馏学习记录

yolov8系列模型蒸馏基本流程&#xff0c;代码下载&#xff1a;这里本人提交了一个demo:djdll/Yolov8_Distillation: Yolov8轻量化_蒸馏代码实现 在轻量化模型设计中&#xff0c;**知识蒸馏&#xff08;Knowledge Distillation&#xff09;**被广泛应用&#xff0c;作为提升模型…...

MacOS下Homebrew国内镜像加速指南(2025最新国内镜像加速)

macos brew国内镜像加速方法 brew install 加速formula.jws.json下载慢加速 &#x1f37a; 最新版brew安装慢到怀疑人生&#xff1f;别怕&#xff0c;教你轻松起飞&#xff01; 最近Homebrew更新至最新版&#xff0c;每次执行 brew 命令时都会自动从官方地址 https://formulae.…...

从“安全密码”到测试体系:Gitee Test 赋能关键领域软件质量保障

关键领域软件测试的"安全密码"&#xff1a;Gitee Test如何破解行业痛点 在数字化浪潮席卷全球的今天&#xff0c;软件系统已成为国家关键领域的"神经中枢"。从国防军工到能源电力&#xff0c;从金融交易到交通管控&#xff0c;这些关乎国计民生的关键领域…...