传统上,在Mac上安装OpenCV的最快,最简单的方法是使用Homebrew进行,但是这种方式却经常无法携带上Java lib。所以需要用到源码编译方式来进行。本文记录一下使用homebrew 和源码编译踩坑过程
准备环境
设备:MacBook Pro(14英寸,2021年)
MacOs: Monterey 12.5.1
Java :JDK 11
Open CV: 4.7.0
HomeBrew 安装遇到的问题
Connection refused
在ANT ,Python3,JDK 都安装好的情况下使用安装命令,
brew install --build-from-source opencv
出现错误Failed to connect to raw.githubusercontent.com port 443 after 5 ms: Connection refused
解决办法:在能链接Google 的情况修改DNS为114.114.114.114解决
没有java 文件夹
安装成功后没有在安装目录下找到share/java/opencv4 使用 brew edit opencv ,修改make 命令无效,始终无法解决
下载源码编译(make install)
安装4.5.0版本出现error: ‘CODEC_ID_H264’ was not declared in this scope; did you mean ‘AV_CODEC_ID_H264’?
尝试了各种方法后,最后在Opencv issues 中发现是一个bug,需要新版本来安装,只好重新下载4.7.0 的版本
安装4.7.0 版本报错No rule to make target zlib
最初使用brew install zlib 后还是无效,包括使用brew link zlib --force后再重新make, 还是一样的问题
解决方法:在cmake 方法中添加-D BUILD_ZLIB=OFF \
完整的下载和安装脚本
1.首先在自己的工作目录下载opencv的安装包
brew install wget
wget -O opencv.zip https://github.com/opencv/opencv/archive/4.7.0.zip
unzip opencv.zip
wget -O opencv_contrib.zip https://github.com/opencv/opencv_contrib/archive/4.7.0.zip
unzip opencv_contrib.zip
2.进入解压后的安装目录
cd opencv-4.7.0
mkdir build && cd build
3.进行cmake
cmake \
-DCMAKE_SYSTEM_PROCESSOR=arm64 \
-DCMAKE_OSX_ARCHITECTURES=arm64 \
-DWITH_OPENJPEG=OFF \
-DWITH_IPP=OFF \
-D CMAKE_BUILD_TYPE=RELEASE \
-D CMAKE_INSTALL_PREFIX=/usr/local/opencv \
-D JAVA_INCLUDE_PATH=$JAVA_HOME/include \
-D JAVA_AWT_LIBRARY=$JAVA_HOME/jre/lib/amd64/libawt.so \
-D JAVA_JVM_LIBRARY=$JAVA_HOME/jre/lib/arm/server/libjvm.so \
-D BUILD_opencv_python2=OFF \
-D BUILD_opencv_java=ON \
-D INSTALL_PYTHON_EXAMPLES=OFF \
-D INSTALL_C_EXAMPLES=OFF \
-D BUILD_ZLIB=OFF \
-D OPENCV_ENABLE_NONFREE=ON \
-D OPENCV_EXTRA_MODULES_PATH=/{your workspace}/opencv/opencv_contrib-4.7.0/modules \
-D BUILD_EXAMPLES=ON ..
- make
make -j8
J之后的数字8表示我们将使用所有8个内核来运行Make命令。您可以根据可用的硬件调整J选项。根据您的硬件,这应该需要6 -12分钟。
5.最后进行安装
sudo make install
IDEA中使用opencv配置
首先要在library中添加编译后的opencv 的jar 包
在要启动的程序上要配置本地opencv库的地址,这个也是比较重要的
写一段TestController来测试环境是否按照成功