使用源码进行编译,在macOS 上安装 OpenCV 4 。
macOS 版本:macOS Big Sur 11.4。
虽然可以参考这篇文章,使用 pip
快速的安装,但使用 pip
安装的 OpenCV 缺少一些算法,因此这篇文章介绍通过编译源码的方式,完整安装官方版本的 OpenCV。
简单而言,在 macOS 上安装 OpenCV,需要首先安装 Xcode 和 Homebrew,之后建立 Python 虚拟环境(可选),最后再使用源码编译安装 OpenCV 4。
Xcode 是 Apple 提供的集成应用环境,可在 macOS 上免费下载使用。
使用 macOS 上的 App Store,搜索并下载安装 Xcode:
安装完成后,需要接受 license 许可。打开一个 终端(Terminal) 窗口,输入以下命令:
sudo xcodebuild -license
向下滑动,接受许可。之后需要安装 Apple Command Line Tools:
sudo xcode-select --install
点击 “安装(Install)” 按钮,即可安装完成,就具备了 make
,gcc
,clang
等编译器工具。
Homebrew 的官方解释是: macOS(或 Linux)缺失的软件包的管理器,可以用于安装非预装的软件包。
由于种种原因,国内的同学无法直接通过官方渠道安装 Homebrew,有网友自己建立了中文的安装脚本:
/bin/zsh -c "$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/raw/master/Homebrew.sh)"
按照中文指示,选择安装源即可完成安装:
另外,卸载 Homebrew 的命令是:
/bin/zsh -c "$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/raw/master/HomebrewUninstall.sh)"
安装完成后,可以使用下面的命令进行升级:
brew update
然后对 macOS 的环境变量文件(bash_profile
)进行修改,可以使用 vim
,nano
,emacs
的不同的编辑器进行修改:
vim ~/.bash_profile
VIM 的常见命令可以参考本文。
并在其中增加 Homebrew 的路径:
# Homebrew
export PATH=/usr/local/bin:$PATH
保存并退出 .bash_profile
文件,并执行 bash 文件使修改生效:
source ~/.bash_profile
在安装了 OpenCV 之前,还需要使用 Homebrew 安装一些编译所需的工具,同时也需要一些读取 JPEG、PNG、TIFF 等格式图像的 I/O 工具以及其他优化包等依赖包。
可以使用下面的命令安装这些依赖包:
brew install cmake pkg-config
brew install jpeg libpng libtiff openexr
brew install eigen tbb
除了上面工具外,建议安装一个 wget
工具,便于使用命令行进行下载:
brew install wget
同时,建议安装一个 git
工具,便于从 GitHub 或 Gitee 等网站直接下载1:
brew install git
可以参考我之前写的 这篇文章 中有关安装 pip
并配置 Python 虚拟环境的相关内容。
同时,如果使用国内镜像较慢时,可以考虑 将 pip 使用的源修改为国内的镜像源。
使用下面命令设置虚拟环境 cv_test
:
mkvirtualenv cv_test -p python3
通过 workon cv_tset
命令进入虚拟环境:
同时,在这个虚拟环境下安装 Numpy:
pip install numpy
相比使用 pip,Homebrew 和 Anaconda 等工具,对 OpenCV 进行编译安装,可以有更多的模块和功能可用。
OpenCV 包括了 opencv 和 opencv_contrib 两种安装包。其中 opencv_contrib 包括了附加模块,建议使用该安装包(但是同时也需要 opencv 的包。
可以使用 wget
从 OpenCV 的官方 GitHub 仓库下载(以 4.0.0 版本为例):
wget -O opencv.zip https://github.com/opencv/opencv/archive/4.0.0.zip
wget -O opencv_contrib.zip https://github.com/opencv/opencv_contrib/archive/4.0.0.zip
如果安装了 git
,可以直接克隆/下载一下 OpenCV 的在线 Git 库:
git clone https://gitee.com/idledo/opencv.git
git clone https://gitee.com/idledo/opencv_contrib.git
同样,由于众所周知的网络原因,我没用 OpenCV 的官方 Git 库,而用了热心网友在 Gitee 上的库…
当然,也可以使用浏览器从官网下载不同版本的 Source 文件。
以使用 git
下载的源代码为例,进入 opencv
目录,创建并进入 build
目录:
cd opencv # 进入 opencv 目录
mkdir build # 创建 build 目录
cd build # 进入 build 目录
然后在相应的虚拟环境下(如我前面创建了 cv_test 虚拟环境),运行如下 cmake
命令:
cmake -D CMAKE_BUILD_TYPE=RELEASE \
-D CMAKE_INSTALL_PREFIX=/usr/local \
-D OPENCV_EXTRA_MODULES_PATH=~/opencv_contrib/modules \
-D PYTHON3_LIBRARY=`python -c 'import subprocess ; import sys ; s = subprocess.check_output("python-config --configdir", shell=True).decode("utf-8").strip() ; (M, m) = sys.version_info[:2] ; print("{}/libpython{}.{}.dylib".format(s, M, m))'` \
-D PYTHON3_INCLUDE_DIR=`python -c 'import distutils.sysconfig as s; print(s.get_python_inc())'` \
-D PYTHON3_EXECUTABLE=$VIRTUAL_ENV/bin/python \
-D BUILD_opencv_python2=OFF \
-D BUILD_opencv_python3=ON \
-D INSTALL_PYTHON_EXAMPLES=ON \
-D INSTALL_C_EXAMPLES=OFF \
-D OPENCV_ENABLE_NONFREE=ON \
-D BUILD_EXAMPLES=ON ..
经过自动运行后, 终端将显示 OpenCV 编译完毕。
运行命令安装 OpenCV:
sudo make install
一段时间后,显示安装完成:
下面创建所谓的 “符号链接(symbolic link)”,将我们 cv_test
虚拟环境的 site-packages
连接到我们系统的 site-packages
,这是 OpenCV 安装的位置。
首先,确定虚拟环境中的 Python 的版本(使用 python --version
命令,这里以 Python 3.7 为例),并寻找对应的 cv2.cpython-37m-darwin.so
的位置。
比如我电脑中该文件的位置是:
/usr/local/lib/python3.7/site-packages/cv2/python-3.7/cv2.cpython-37m-darwin.so
下面需要将该文件链接到 cv_test
虚拟环境中:
cd ~/.virtualenvs/cv_test/lib/python3.7/site-packages # 进入到虚拟环境相应的目录下
ln -s /usr/local/lib/python3.7/site-packages/cv2/python-3.7/cv2.cpython-37m-darwin.so cv2.so # 链接文件
在 cv_test
虚拟环境下,输入 python3
进入 Python 环境,并使用 import cv2
导入 OpenCV,使用 cv.__version__
显示 OpenCV 版本:
import cv2
cv.__version__
下图显示已安装配置完成了 OpenCV:
使用源码编译的方式在 macOS 上安装 OpenCV,步骤较为复杂,部分内容因个人电脑配置而不同,欢迎各位在评论区讨论碰到的困难。
关于 Git 介绍,可以参考该网站。当然,本文只用到了 Git 最最简单的操作。 ↩︎