macOS源码编译OpenCV (with Qt & OpenGL) 、TensorFlow和Keras

主要参考

macOS Mojave: Install TensorFlow and Keras for Deep Learning
How to build and install (from source) OpenCV with Qt support in macOS
OpenCV macOS:编译安装OpenCV4+OpenCV Contrib
Mac OSX 系统CMake、QT5运行OpenCV 4.0
我在macOS Catalina上使用也没有问题。

主要注意事项

安装Qt及CMake-GUI

brew install qt5

如果安装过命令行的CMake,使用如下命令卸载

brew uninstall cmake

在官网 下载后缀为 .dmg 的文件,并安装。

CMake配置OpenCV

在CMake中设置好 Where is the source code 和 Where to build the binaries后,由于网络原因,可能会提示下载ippicv 错误。有两种解决方法,一种是直接下载我已经下载过的文件,百度网盘地址是:链接:https://pan.baidu.com/s/1teLlVCNx-JlsFQsXc0W64A 密码:8pw5,下载后在OpenCV的源码文件夹找到隐藏的**.cache**文件夹,并替换相应文件,如下图所示:
macOS源码编译OpenCV (with Qt & OpenGL) 、TensorFlow和Keras_第1张图片
另一种就是DIY,以ippicv为例,可从GitHub的OpenCV网站下载相应文件。最新的网址是:ippicv,我下载的macOS版本名称是:ippicv_2019_mac_intel64_general_20180723.tgz。
将其移动到 opencv源码文件夹/.cache/ippcv 下,并重命名,格式为:HashCode-FileName,其中HashCode为 opencv源码文件夹/3rdparty/ippicv/ippicv.cmake 中第5行代码 IPPICV_COMMIT 的值,我这里是

fe6b2bb75ae0e3f19ad3ae1a31dfa4a2-ippicv_2019_mac_intel64_general_20180723.tgz

Cmake 配置 Qt5 和 OpenGL

将OPENCV_EXTRA_MODULES_PATH替换为opencv_contrib/modules的文件夹位置,运行命令行如下:

cmake -D CMAKE_BUILD_TYPE=RELEASE \
    -D CMAKE_INSTALL_PREFIX=/usr/local \
    -D OPENCV_EXTRA_MODULES_PATH=/Users/XXXX/Code/Source/OpenCV/opencv_contrib/modules \
    -D WITH_QT=ON \
    -D WITH_OPENGL=ON \
    -D Qt5_DIR=/usr/local/Cellar/qt/5.13.2/lib/cmake/Qt5 \
    -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=ON \
    -D OPENCV_ENABLE_NONFREE=ON \
    -D BUILD_EXAMPLES=ON ..

配置完成后,GUI部分应该显示如下:

macOS源码编译OpenCV (with Qt & OpenGL) 、TensorFlow和Keras_第2张图片
如果后续编写测试代码的时候,遇到如下错误:

symbol(s) not found for architecture x86_64
linker command failed with exit code 1 (use -v to see invocation)

可能是多个版本导致的冲突,可卸载以前安装的OpenCV,再重新安装,命令如下:

brew uninstall opencv
rm /usr/local/lib/libopencv_*
rm -rf /usr/local/include/opencv
rm -rf /usr/local/include/opencv2

CMakeLists.txt也需要做如下修改:

find_package(OpenCV 4.1.0 REQUIRED)
message("OpenCV version: ${OpenCV_VERSION}")

find_package(OpenGL REQUIRED)
add_executable(AppName SourceCode.cpp)
target_link_libraries(AppName ${OpenCV_LIBS} ${OPENGL_LIBRARIES})

OpenCV的include路径如下:

/usr/local/include/opencv4

安装Python 3.6版本而非 3.7版本

如果用Zsh,需将~/.bash_profile修改为~/.zshrc

建立OpenCV软链接路径不太一样,我的为

/usr/local/lib/python3.6/site-packages/cv2/python-3.6

所以在查找并修改 cv2.cpython-36m-darwin.so 时,要做相应修改。

需要使用python环境时,只需输入如下命令即可

workon dl4cv

如果遇到python virtualenvwrapper bad interpreter问题,需要进行如下修改

在终端输入 which python3.6 ,确定python路径
用编辑器打开 /usr/local/bin/virtualenv
修改第一行 #! 后的python路径为上面查找到的python路径
参考链接: python virtualenvwrapper bad interpreter

在Jupter Notebook设置Virtualenv环境

pip3 install ipykernel
python3 -m ipykernel install --user --name=dl4cv

参考链接:Virtualenv in IPython Jupyter Notebook

你可能感兴趣的:(工具安装)