主要參考
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