在我的这篇博文MacOS Catalina编译安装openCV 4.2.0(2020.3月)中, 使用homebrew来对python进行版本管理,源码直接下载的压缩包。本文则使用pyenv来进行python版本管理,openCV4.5.5源码从gitee镜像克隆而来。
前提:已经使用pyenv进行python版本管理
1. 安装cmake
brew install cmake
2. 创建一个python 3.6.8的虚拟环境并激活它,名称为py3.6.8
,并安装numpy
pyenv install 3.6.8
pyenv virtualenv 3.6.8 py3.6.8
pyenv activate py3.6.8
pip install numpy
3. 克隆代码,切换到4.5.5标签(注意4.5.5不是一个分支)
cd ~
git clone https://gitee.com/mirrors/opencv.git
git clone https://github.com/opencv/opencv_contrib.git
cd opencv_contrib
git switch 4.x
cd ~/opencv
git switch 4.5.5
mkdir build && cd build
也可以从Github页面:Opencv Releases 直接下载源码:
注意解压之后如果二级目录,需要移动
cd ~
wget -O opencv.zip https://github.com/opencv/opencv/archive/4.5.5.zip
wget -O opencv_contrib.zip https://github.com/opencv/opencv_contrib/archive/4.5.5.zip
unzip opencv.zip
unzip opencv_contrib.zip
#解压后最好给文件夹改名
mv ./opencv-4.5.5 opencv
mv ./opencv_contrib-4.5.5 opencv_contrib
cd ~/opencv
mkdir build && cd build
4. 配置
cmake -D CMAKE_BUILD_TYPE=RELEASE \
-D CMAKE_INSTALL_PREFIX=~/.pyenv/versions/3.6.8/envs/py3.6.8/opencv455\
-D OPENCV_GENERATE_PKGCONFIG=ON \
-D PYTHON3_EXECUTABLE=$PYENV_ROOT/shims/python \
-D PYTHON3_LIBRARY=~/.pyenv/versions/3.6.8/lib/libpython3.6m.a \
-D PYTHON3_NUMPY_INCLUDE_DIRS=~/.pyenv/versions/3.6.8/envs/py3.6.8/lib/python3.6/site-packages/numpy/core/include/ \
-D OPENCV_EXTRA_MODULES_PATH=~/opencv_contrib/modules \
-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 \
-D ENABLE_FAST_MATH=ON \
-D WITH_LIBV4L=ON \
-D WITH_OPENGL=ON ..
需要注意PYTHON3_EXECUTABLE
、PYTHON3_LIBRARY
和PYTHON3_NUMPY_INCLUDE_DIRS
的路径,本文是按照pyenv的虚拟配置(pyenv的3.6.8版本的lib和py3.6.8虚拟环境的numpy)来对应调整的。
cmake配置完成如果如下图所示,Python 3
下面的Interpreter
,Libraries
,numpy
,install path
都指向pyenv虚拟环境的正确路径,说明配置是正确的:
如果如下图所示,Python 3
下面的Interpreter
,Libraries
,numpy
,install path
不完整,那请反复检查各个配置路径。
5. 编译
sudo make -j4 && make install
如果遇到如下错误:
ld: warning: directory not found for option '-L/usr/local/opt/ruby/lib'
那就自己建一个/usr/local/opt/ruby/lib'
这个文件夹就行了。
6. 验证
(py3.6.8)~/opencv/build$ python
Python 3.6.8 (default, Mar 23 2022, 11:13:20)
[GCC Apple LLVM 12.0.0 (clang-1200.0.32.29)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import cv2
>>> cv2.__version__
'4.5.5'
参考资料: