在Mac & Conda虚拟环境下从源码编译Opencv
准备工作——Cmake
brew install cmake
下载并解压特定版本的 opencv 源代码
以3.4.6版本为例,从原 repo 分别下载 opencv.zip 和 opencv_contrib.zip
重命名 (rename)
此案例中假设下载文件放在 ~/ 目录下
当前目录:~/ 即 $HOME
tree ~/
——opencv-3.4.6
——opencv_contrib-3.4.6
mv opencv-3.4.6 opencv
mv opencv_contrib-3.4.6 opencv_contrib
新建 build 文件
cd ./opencv
mkdir build
cd build
创建新的 Conda 虚拟环境
conda create --name opencv python=3.7.5 numpy=1.16.2
source activate cv
Cmake
# 临时变量【需要指定anaconda3安装路径】
export CONDA_HOME=/Users/mac/opt/anaconda3
export CPLUS_INCLUDE_PATH=$CONDA_HOME/envs/opencv/lib/python3.7
cmake -D CMAKE_BUILD_TYPE=RELEASE \
-D CMAKE_INSTALL_PREFIX=/usr/local \
-D OPENCV_EXTRA_MODULES_PATH=/Users/mac/Downloads/opencv_contrib/modules \
-D PYTHON3_LIBRARY=$CONDA_HOME/envs/opencv/lib/libpython3.7m.dylib \
-D PYTHON3_INCLUDE_DIR=$CONDA_HOME/envs/opencv/include/python3.7m \
-D PYTHON3_EXECUTABLE=$CONDA_HOME/envs/opencv/bin/python \
-D PYTHON3_PACKAGES_PATH=$CONDA_HOME/envs/opencv/lib/python3.7/site-packages \
-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 ..
cmake -D CMAKE_BUILD_TYPE=RELEASE \
-D OPENCV_EXTRA_MODULES_PATH=/home/myname/Downloads/opencv_contrib/modules \
-D CMAKE_INSTALL_PREFIX=/usr/local \
-D WITH_TBB=ON \
-D BUILD_NEW_PYTHON_SUPPORT=ON \
-D WITH_V4L=ON \
-D INSTALL_C_EXAMPLES=ON \
-D INSTALL_PYTHON_EXAMPLES=ON \
-D BUILD_EXAMPLES=ON \
-D WITH_QT=OFF \
-D WITH_OPENGL=ON \
-D BUILD_opencv_ximgproc=ON ..
make && make install
make -j4 # 对于四核情形
sudo make install
在以上步骤中无任何报错将为配置成功,建议所有步骤在网络环境较好的情形下进行。
可能存在的问题(Troubleshooting)及解决方案
Cmake
过程中需要面临ippicv
在线下载的问题,对于网络状况不佳的情况可采用预先下载到本地的方法:- 原开发源码下载地址:GitHub/ippicv,在 branch 中根据自己的系统和需求下载对应版本(报错log中会给出提示),
Mac
上下载3.4.6
对应版本的 下载地址 。 - 更改
ippicv.cmake
中对应的下载地址为本地地址。
- 原开发源码下载地址:GitHub/ippicv,在 branch 中根据自己的系统和需求下载对应版本(报错log中会给出提示),
47 "https://raw.githubusercontent.com/opencv/opencv_3rdparty/${IPPICV_COMMIT}/ippicv/"
更改为
47 "file://下载地址的完整目录"
make
过程中同样可能存在不成功的问题,fatal error: boostdesc_bgm.i: No such file or directory
给出了部分需要注意的补救解决方案。- 下载
face_landmark_model.dat
不成功导致的 not found。从 下载地址 下载该文件 mv 至 log 文档 (~/opencv/build/CMakeDownloadLog.txt) (~/opencv/build/share/opencv4/testdata/cv/face/)中给出的缺失目录[报错字段]。
- 下载
测试
import cv2
cv2.__version__