OpenCV Java入门一 在MAC系统上安装OpenCV

这篇具有很好参考价值的文章主要介绍了OpenCV Java入门一 在MAC系统上安装OpenCV。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

在Mac系统上安装OpenCV

Homebrew

确保brew update最新

因此你的brew update一定要为最新。在brew update时,经常我们会碰到卡死、或者报各种奇芭的错,99%的用户碰到的说是xcode不是最新或者说是commandline tool找不到,因此你可以使用以下步骤

sudo rm -rf /Library/Developer/CommandLineTools
sudo xcode-select --install

稍等12-15分钟(依赖于网速和你的Mac性能),即完成了xcode的修复。

再运行

brew update

果碰到brew已经坏了(别重装MAC哈),我经常碰到,是因为brew的很多源是在“墙外”,有时装一半掉一半导致了Mac内的brew被搞了“一股臭味”,那么没有关系,我们就可以修复我们的brew。

其他
xcode-select: note: install requested for command line developer tools报错

安装brew软件管理工具的时候遇见了怎么一个错误:xcode-select: note: install requested for command line developer tools

手动下载commandLineTools

点击这里下载https://developer.apple.com/download/all/

brew install opencv,java,opencv,Powered by 金山文档

进入下载页,搜索Command Line Tools,查看系统版本,找到跟系统版本一样或者相近的xcode-select版本。系统版本查看电脑的关于本机就可以。

找到后点击版本,打开后下载程序并执行即可。

再次终端执行 /bin/zsh -c “$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/raw/master/Homebrew.sh)

进行下载安装成功

删除本机已经混乱或者坏了的brew

brew update-reset

rm -rf /usr/local/Homebrew/Library/Taps/homebrew/homebrew-core
 
brew tap homebrew/core

设置国内brew镜像源-我们使用了国内中科大源

# Homebrew 源代码仓库
cd "$(brew --repo)"
git remote set-url origin https://mirrors.ustc.edu.cn/brew.git


# Homebrew 核心软件仓库
cd "$(brew --repo)/Library/Taps/homebrew/homebrew-core"
git remote set-url origin https://mirrors.ustc.edu.cn/homebrew-core.git


# Homebrew cask 软件仓库,提供 macOS 应用和大型二进制文件
cd "$(brew --repo)"/Library/Taps/homebrew/homebrew-cask
git remote set-url origin https://mirrors.ustc.edu.cn/homebrew-cask.git


# Homebrew 预编译二进制软件包
echo 'export HOMEBREW_BOTTLE_DOMAIN=https://mirrors.ustc.edu.cn/homebrew-bottles' >> ~/.zshrc
source ~/.zshrc


# 更新镜像
brew update

其他

这边再次需要各位引起重视,一定要在恒定百兆宽带基础上对xcode、brew进行update或者是运行上述修复命令。本身OpenCV还有Brew以及Mac相关的一些关键资源都是在墙外,虽然国内有一些mirror,但速度不行。

如果你的网速到达不了恒定的一秒至少5兆下载速率,你光以上几步因为失败、反复、失败就要耗费40多个小时。

对于网上说有时brew update时会碰到“git clone”或者是“error: RPC failed; curl 92 HTTP/2 stream 0 was not closed cleanly: PROTOCOL_ERROR (err 1)"。

这些的root cause就是一点:

你的网络速率不行,导致git在clone超过100兆以上的东西时,自己把自己打断了;

此时如果你按照网上做以下的设置,试图先clone下来一个框子或者是把所谓的git下载时的缓存加大都是徒劳。因此,请确保你的网络至少有恒定的5兆每秒。现在100兆,200兆宽带都到家,这个已经不是条件限制了我想。

git config --global http.postBuffer 2024288000
 
git config --list
 
git config --global core.compression 0
 
git clone --depth 1 https://mirrors.ustc.edu.cn/homebrew-core.git
 
git fetch --unshallow 
 
git pull --all

确保必须要装ANT

brew install ant

装完后你一定要确保你的Mac的环境变量path里可以直接访问ant命令。

ant -version
brew install opencv,java,opencv,Powered by 金山文档

如果不可以在任意地方运行ant -version命令得到ant的正确输出,你还需要手工自己在~/.bash_profile里加入ant的命令于你的path变量中去。

记得一定要是ant 1.9或者以上版本,否则装了也是白装。

安装python3

个梗和上面第3点,必装ANT一样。OpenCV无论是3还是4在安装时要生成Java这两个文件,必装Python3.

brew upgrade python3

mac一般自带python2,而big sur版本中装OpenCV都用的是OpenCV4,它要求必须安装python3.

因此我们可以升级我们的本地python2至3,升级完后你原有的python2还会留着。网上会说把python3和python2互换一下。

但没必要,你可以保证python2和python3都存在。因为python2用的命令叫python,python3的命令叫python3.

这个没事的。因为我本机还有不少python2写的AI,因此我经常在两者间要用哪个时做手工切换。

安装jdk-17

安装过程网上找,选可以调试的版本

MacOS查看和设定JAVA_HOME

查看JAVA_HOME /usr/libexec/java_home -V


在终端中输入

java -version

查看当前的java版本信息

使用下面的命令查看JAVA_HOME

echo $JAVA_HOME

如果没有输出JAVA_HOME的路径,说明还没有设置

可以继续下面的设置操作


JAVA_HOME设置


首先查找java的安装路径

我们首先想到的就是使用

which java
或者
whereis java

我们得到的结果是

/usr/bin/java

我们到finder中打开这个目录看到的并不是真正的java的安装目录

通过查找,在开发者网站找到了一篇文章

https://developer.apple.com/library/content/qa/qa1170/_index.html
JavaHomeManyJava applications need to know the location of a $JAVA_HOME directory. The $JAVA_HOME on MacOSX should be found using the /usr/libexec/java_home command line tool on MacOSX10.5 or later.On older MacOSX versions where the tool does not exist, use the fixed path "/Library/Java/Home". The /usr/libexec/java_home tool dynamically finds the top Java version specified inJavaPreferencesfor the current user.This path allows access to the bin subdirectory where command line tools such as java, javac, etc. exist as on other platforms.The tool /usr/libexec/java_home allows you to specify a particular CPU architecture and Java platform version when locating a $JAVA_HOME.Another advantage of dynamically finding this path,as opposed to hardcoding the fixed endpoint,is that it is updated when a new version of Javais downloaded via SoftwareUpdate or installed with a newer version of MacOS X.Forthis reason, it is important that developers do not install files in the JDKs inside of /System, since the changes will be lost with subsequent updates by newer versions of Java.To obtain the path to the currently executing $JAVA_HOME, use the java.home System property.

我们执行以下命令查看

/usr/libexec/java_home -V

执行结果

Matching Java Virtual Machines (1):
    1.8.0_111, x86_64:  "Java SE 8" /Library/Java/JavaVirtualMachines/jdk1.8.0_111.jdk/Contents/Home

/Library/Java/JavaVirtualMachines/jdk1.8.0_111.jdk/Contents/Home

结果中的

/Library/Java/JavaVirtualMachines/jdk1.8.0_111.jdk/Contents/Home

就是JAVA_HOME的路径

我们将JAVA_HOME的路径添加到.bash_profile中

cd #切换到当前目录下
ls -a #查看当前路径下的所有文件,主要就是看看我们要编辑的.bash_profile是不是存在

将下面的内容添加到.bash_profile的最后

export JAVA_HOME=$(/usr/libexec/java_home)
export PATH=$JAVA_HOME/bin:$PATH
export CLASS_PATH=$JAVA_HOME/lib

保存完成之后使用

source .bash_profile

更新修改的内容

现在我们再使用上面的查看JAVA_HOME的命令查看的话,就会看到以下结果的输出

/Library/Java/JavaVirtualMachines/jdk1.8.0_111.jdk/Contents/Home

安装OpenCV

Homebrew安装--我安装失败,报错缺ffmpeg的库,安装后也不可以

OpenCV安装核心步骤
  • 下载OpenCV最新master源码;

  • 下载OpenCV 对应版本的contribute源码包(有内置图形、JAVA包、声音等);

  • 使用C编译器,生成C工程;

  • 使用C编译器,编译C工程;

  • 使用python3+ant对java文件进行编译并生成java通过jndi调用OpenCV的C的底层native lib包(在Windows10下是一个.dll文件);

  • 把C编译生成成功的release包进行系统安装;

brew edit opencv

在安装前,你要确认你的opencv内的java编译选项是turn on的。默认opencv是不会安装和编译打包java文件的。

在控制端找到-DBUILD_opencv_java=OFF 修改为-DBUILD_opencv_java=ON ,以确保之后生成需要的jar文件如下图所示

brew install opencv,java,opencv,Powered by 金山文档

然后你就可以:

brew install --build-from-source opencv

接下去按照我这个机型,22分钟后,一切显示failed 0,install successfully。

安装opencv,如果之前有安装过但是没有jar文件的话,需要运行brew reinstall --build-from-source opencv来重装。

你就可以看到OpenCV4正确装在了你的这个路径下了

brew install opencv,java,opencv,Powered by 金山文档

而java用文件是生成在这边的

brew install opencv,java,opencv,Powered by 金山文档

源码编译安装-4.7.0

依赖库安装
brew install gcc git cmake pkg-config ffmpeg libgphoto2 libav libjpeg libpng libtiff libdc1394 ant
JAVA 环境变量配置

我这里用的是~/.zshrc文件,除此之外,~/.bash_profile~/.bashrc/etc/profile 这些文件都可以添加环境变量,不用纠结我为什么在zshrc中添加(启动终端会自动加载的环境变量配置文件)

vi ~/.zshrc
export JAVA_HOME=$(/usr/libexec/java_home)
export PATH=$JAVA_HOME/bin:$PATH
export CLASS_PATH=$JAVA_HOME/lib
========================分割线-很重要========================
export JAVA_AWT_INCLUDE_PATH=$JAVA_HOME
export JAVA_AWT_LIBRARY=$JAVA_HOME
export JAVA_INCLUDE_PATH=$JAVA_HOME/indclude
export JAVA_INCLUDE_PATH2=$JAVA_HOME/include/darwin
export JAVA_JVM_LIBRARY=$JAVA_HOME
============================================================

注意分割线中间内容,不配置安装OpenCV之后,一直没有找到生成的Jar包和dylib动态库。

保存配置

source .zshrc

配置完了保存,别忘了使用source命令重载配置,并检查是否配置成功

echo $JAVA_INCLUDE_PATH2 // 检查是否配置成功

Cmake

如果红色字体不配置的话,Cmake之后的结果如下:

...
--   Java:                          
--     ant:                         /usr/local/bin/ant (ver 1.10.12)
--     JNI:                         NO
--     Java wrappers:               NO
--     Java tests:                  NO
...

配置之后,Cmake之后结果如下:

...
--   Java:                          
--     ant:                         /usr/local/bin/ant (ver 1.10.12)
--     JNI:                         /Library/Java/JavaVirtualMachines/jdk1.8.0_291.jdk/Contents/Home/include /Library/Java/JavaVirtualMachines/jdk1.8.0_291.jdk/Contents/Home/include/darwin /Library/Java/JavaVirtualMachines/jdk1.8.0_291.jdk/Contents/Home/include
--     Java wrappers:               YES
--     Java tests:                  YES
...

就是这个差别,会影响最后到底有没有生成Jar包和动态库

下载编译

下载:https://opencv.org/releases/

我选的4.7.0 选Sources下载解压

cd Downloads/opencv-4.7.0

mkdir build

cd build

cmake -DBUILD_SHARED_LIBS=OFF -DWITH_IPP=OFF -DBUILD_ZLIB=OFF -DCMAKE_INSTALL_PREFIX={你的路径}/opencv-4.5.4 ../


如果遇到了(表示你Cmake太多次了)
1.FATAL:In-source builds are not allowed.
You should create separate directory for build files.
解决方法:1)先删除刚才在当前目录下创建的CMakeCache.txt文件和CMakeFIles目录;2)再新建目录,比如build目录,在build目录执行cmake.

... 开始进行配置/编译

注意检查最后:
--   Java:                          
--     ant:                         
--     JNI:                         
--     Java wrappers:               
--     Java tests:    

这后面的值有没有,如果没有说明环境变量没有配置成功

等待片刻后在当前目录下会出现一堆文件,这时使用命令

make -j 8

等待编译完成,然后进行安装,等待结束

make install
找Jar包和dylib动态库

安装结束后,可以找到安装目录,找到对应的动态链接库以及对应的Jar文件

cd ~/Downloads/opencv-4.7.0/build/bin
能找到 opencv-470.jar 文件

cd ~/Downloads/opencv-4.7.0/build/lib
能找到 libopencv_java470.dylib 文件

至此,OpenCV的安装结束

OpenCV环境变量配置
  1. 如果使用了Homebrew完成了OpenCV安装,则忽略这一步

  1. 如果直接使用的源码安装,则需要配置环境变量

export OPENCV_HOME={你的目录}
export PATH=$OPENCV_HOME/build/bin:$PATH

别忘了source加载

➜ opencv_version
4.7.0

看到这个环境变量就配置成功了

Java使用:

System.load(opencvPath + "libopencv_java470.dylib");
<dependency>
    <groupId>org.bytedeco.javacpp-presets</groupId>
    <artifactId>opencv</artifactId>
    <version>4.0.1-1.4.4</version>
</dependency>

其他人:IDEA + Java 使用OpenCV

必备:opencv-454.jarlibopencv_java454.dylib (在windows环境下,应该为dll文件,在Linux环境下,应该为.so文件)

将jar包放入项目根目录./lib目录下

1. maven项目引入jar包
<dependency><groupId>org.opencv</groupId><artifactId>opencv</artifactId><version>4.5.4</version><scope>system</scope><systemPath>${project.basedir}/lib/opencv-454.jar</systemPath></dependency>
2. 编写测试类
publicclassOpenCVTest{static{System.loadLibrary(Core.NATIVE_LIBRARY_NAME);}publicstaticvoidmain(String[] args){Mat imread =Imgcodecs.imread("WechatIMG26763.jpeg");System.out.println(imread);}}

点击执行,这个时候会报错,不要管

点开IDEA的运行Configurations,找到OpenCVTest选项,添加VM参数

-Djava.library.path={你的libopencv_java454.dylib所在目录}
例如:/Home/Users/my/Download/opencv_4.5.4/build/lib

再次点击运行:

Mat[873*1920*CV_8UC3, isCont=true, isSubmat=false, nativeObj=0x7fb3524176b0, dataAddr=0x7fb356aaa000]

至此,开发环境搭建完成。

3. 关于打包执行问题

主要是需要把我们独立引入的lib下的包打包到jar中

<build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><configuration><includeSystemScope>true</includeSystemScope><fork>true</fork></configuration></plugin></plugins></build>

打包后,所有依赖包都会打包到jar中

4. 建议把Jar包上传至Maven仓库,方便正常打包使用
mvn install:install-file -Dfile={jar地址} -DgroupId=org.opencv -DartifactId=opencv-454-for-mac -Dversion4.5.4 -Dpackaging=jar

so文件支持macos和linux么,osx上的.so和.dylib有什么区别?

在Mac OS X上.dylib和.so之间的区别在于它们的编译方式。对于.so文件,您使用-shared;对于.dylib,您使用-dynamiclib。.so和.dylib都可以作为动态库文件互换,并且都具有DYLIB或BUNDLE的类型。这是显示此内容的不同文件的读数。

两者在Mac OS X上等效的原因是为了与其他编译为.so文件类型的UNIX OS程序向后兼容。

编译说明:无论是编译.so文件还是.dylib文件,都需要在链接步骤中将正确的路径插入动态库中。通过将-install_name和文件路径添加到链接命令来执行此操作。如果不这样做,您将遇到这篇文章中看到的问题:Mac Dynamic Library Craziness(可能仅适用于Fortran)。文章来源地址https://www.toymoban.com/news/detail-815316.html

到了这里,关于OpenCV Java入门一 在MAC系统上安装OpenCV的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Mac安装opencv后无法导入cv2的解决方法

    前提条件 :以下两个插件安装成功 pip install opencv-python pip install --user opencv-contrib-python 注:直接用pip install opencv-contrib-python如果报错,就加上“–user\\\" 第一步: 设置–添加python解释器 第二步: 安装了Anaconda3,就去该目录中找到python的解释器,点击右上角,Add 为了区分其他解

    2024年02月12日
    浏览(36)
  • Ubuntu【系统环境下】【编译安装OpenCV】【C++调用系统opencv库】

    本人需要用C++写代码,调用OpenCV库,且要求OpenCV版本号大于4.1.0 由于使用的是18.04的版本,所以apt安装OpenCV的版本始终是3.2.0,非常拉胯!!! 所以只能重新编译安装OpenCV 查看当前C++调用的OpenCV代码 apt 安装 OpenCV sudo apt install libopencv-dev apt 安装 OpenCV 并与系统python环境关联

    2024年02月11日
    浏览(37)
  • 【OpenCV】如何在Linux操作系统下正确安装 OpenCV

    我是在虚拟机上跑的 Linux 5.8.0-44-generic 。 配置如下: 目录 第一步:下载依赖文件 第二步:下载 opencv 和 opencv_contrib 源码 第三步:解压缩包 第四步:移动文件 第五步:生成 makefile 文件 第六步:进行 make 编译 第七步:配置路径 第八步:测试 opencv 这一步非常重要,如果是缺

    2024年03月11日
    浏览(29)
  • 【运维】Ubuntu,如何在Ubuntu系统中编译和安装OpenCV, apt安装OpenCV

    在C++开发中,使用OpenCV是一个常见的需求。您可以选择使用conan构建包,或者直接将OpenCV安装到系统中。官方文档提供了详细的教程,可以在这里找到:OpenCV官方文档 然而,在这里我们将演示一种自己的安装方法,逐步进行操作: 步骤1:更新系统 在安装任何软件之前,请确

    2024年01月23日
    浏览(43)
  • ubuntu18.04系统安装opencv及opencv_contrib

    这篇文章博主是正在学习的过程中总结的,有什么问题请各位提出,便于博主改正。 博主使用的 ubuntu 系统是 18.04 , opencv 和 opencv_contrib 均是 4.6.0 版本的,使用 Qt 编写使用opencv的程序。 安装任意版本都是通用的,如果有问题,欢迎各位提出修改建议。 1.opencv安装包 下载地

    2024年02月04日
    浏览(54)
  • OpenCV从入门到精通实战(四)——答题卡识别判卷系统

    基于OpenCV的答题卡识别系统,其主要功能是自动读取并评分答题卡上的选择题答案。系统通过图像处理和计算机视觉技术,自动化地完成了从读取图像到输出成绩的整个流程。下面是该系统的主要步骤和实现细节的概述: 1. 导入必要的库 系统首先导入了 numpy 、 argparse 、 i

    2024年04月22日
    浏览(22)
  • 多版本opencv共存 删除原系统opencv,安装opencv4.4.0 /3.4.10 / 2.4.13.5

    本文用于记录opencv共存设置过程以及踩过的坑 似乎没完全删除 使用 find /usr iname opencv find /usr iname opencv4 find /usr iname opencv3.4 (之前安过3.4) find /usr iname opencv2 找到所有相关文件夹删除。 下面这条命令似乎可以把所有依赖都一起检测出来,并可以逐项悬着是否删除(由于对

    2024年01月18日
    浏览(43)
  • Macbook M1编译安装Java OpenCV

    确保所有需要模块都打上了✔,未打✔的需要使用`brew`进行安装 在此处下载OpenCV源代码,选择Source,点击此处下载opencv_contrib-4.8.0 或者使用如下命令,通过Terminal下载 进入下载路径,并创建build文件夹 建立一个 run.sh 文件,并输入如下代码,其中 BUILD_opencv_java 设置为 ON ,

    2024年02月16日
    浏览(43)
  • Ubuntu18.04 系统安装 OpenCv

    Ubuntu18.04 系统安装 OpenCv。 打开新终端,按如下指令顺序依次输入,配置OpenCv环境依赖。 注:安装libdc1394-22-dev时会出现报错(无法定位 libjasper-dev),打开新终端并依次输入以下命令即可解决该问题。 打开下面网址,选择所需OpenCv版本,下载Sources格式文件,下载完成后解压

    2024年02月11日
    浏览(39)
  • OpenCV.js 入门教程指北:下载/安装/编译/代码实现/运行 一条龙

    学习计算机视觉接触到的第一个库,非常有意思的是,竟然有JS的版本 这是官方文档:https://docs.opencv.org/3.3.1/d5/d10/tutorial_js_root.html 为了节省大家的时间,我这里对官方的介绍简单摘要一些: OpenCV supports a wide variety of programming languages such as C++, Python, and Java, and is available on d

    2024年04月28日
    浏览(27)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包