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**文件夾,並替換相應文件,如下圖所示:
在這裏插入圖片描述
另一種就是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部分應該顯示如下:

在這裏插入圖片描述
如果後續編寫測試代碼的時候,遇到如下錯誤:

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章