一、本機環境說明
當前各項版本為:
系統和軟件 | 版本號 |
---|---|
macOS Sierra | v10.12.5 |
Python3 | v3.6.1 |
OpenCV(待安裝) | v3.2.0 |
其他要求:Xcode
和Homebrew
二、安裝虛擬環境工具virtualenvwrapper(可選)
$ pip3 install virtualenv virtualenvwrapper
更新~/.bash_profile
:
# Virtualenv/VirtualenvWrapper
export VIRTUALENVWRAPPER_PYTHON=/usr/local/bin/python3
source /usr/local/bin/virtualenvwrapper.sh
重新加載.bash_profile
$ source ~/.bash_profile
創建cv3
虛擬環境用來編譯OpenCV(注意這里使用-p python3
參數來確保Python3使用):
$ mkvirtualenv cv3 -p python3
隨后將進入cv3
虛擬環境中。之后無論什么時候再次希望進入這個虛擬環境,執行命令:
$ workon cv3
三、安裝OpenCV的依賴包
在該虛擬環境下,安裝Numpy
(pip
也將智能匹配適合此環境下的依賴包,因此無需pip3
):
$ pip install numpy
為了從源文件編譯OpenCV
,讀取各種格式的圖片,以及OpenCV
自身優化依賴需要安裝以下包:
$ brew install cmake pkg-config
$ brew install jpeg libpng libtiff openexr
$ brew install eigen tbb
四、編譯OpenCV
git基本模塊
$ cd ~
$ git clone https://github.com/Itseez/opencv.git
$ cd opencv
$ git checkout 3.2.0
git擴展模塊(需要確保與基本模塊版本匹配)
$ cd ~
$ git clone https://github.com/Itseez/opencv_contrib
$ cd opencv_contrib
$ git checkout 3.2.0
現在所需文件已經存在于本地目錄中,創建build
文件夾:
$ cd ~/opencv
$ mkdir build
$ cd build
用cmake
進行配置(創建Makefile)(注意這里有許多的3.6,這些部分表明是版本依賴的,如果編譯其他版本需要進行相應修改,還有記住如果不是在虛擬環境下安裝的話相應的參數也要修改):
cmake -D CMAKE_BUILD_TYPE=RELEASE \
-D CMAKE_INSTALL_PREFIX=/usr/local \
-D PYTHON3_PACKAGES_PATH=~/.virtualenvs/cv3/lib/python3.6/site-packages \
-D PYTHON3_LIBRARY=/usr/local/Cellar/python3/3.6.1/Frameworks/Python.framework/Versions/3.6/lib/libpython3.6m.dylib \
-D PYTHON3_INCLUDE_DIR=/usr/local/Cellar/python3/3.6.1/Frameworks/Python.framework/Versions/3.6/include/python3.6m \
-D INSTALL_C_EXAMPLES=ON \
-D INSTALL_PYTHON_EXAMPLES=ON \
-D BUILD_EXAMPLES=ON -D BUILD_opencv_python3=ON \
-D OPENCV_EXTRA_MODULES_PATH=~/opencv_contrib/modules ..
在CMake輸出中找到以下段落,如果To be built
中包括python3
(一般在最后)
-- OpenCV modules:
-- To be built: core flann imgproc ml photo reg surface_matching video dnn fuzzy imgcodecs shape videoio highgui objdetect plot superres ts xobjdetect xphoto bgsegm bioinspired dpm face features2d line_descriptor saliency text calib3d ccalib datasets rgbd stereo tracking videostab xfeatures2d ximgproc aruco optflow phase_unwrapping stitching structured_light python3
并且可以在輸出中找到以下段落(注意各個3.6版本的正確依賴)
-- Python 3:
-- Interpreter: /Users/yitao/.virtualenvs/cv3/bin/python3 (ver 3.6.1)
-- Libraries: /usr/local/Cellar/python3/3.6.1/Frameworks/Python.framework/Versions/3.6/lib/libpython3.6m.dylib (ver 3.6.1)
-- numpy: /Users/yitao/.virtualenvs/cv3/lib/python3.6/site-packages/numpy/core/include (ver 1.13.0)
-- packages path: /Users/yitao/.virtualenvs/cv3/lib/python3.6/site-packages
說明到目前為止一切很順利,如果有問題,參看參考資料的Step 6
。
在沒有任何報錯的情況下,我們就可以用make
編譯了!(-j4
與系統的內核數有關,不是必需的)
$ make -j4
經過一陣漫長的等待(不到半個小時),如果整個過程都沒有報錯,就可以安裝啦(盡管我沒有遇到什么問題,但是如果有問題的話,用sudo
即可)!
$ make install
至此,已經完成OpenCV的安裝了。
五、檢查安裝是否成功
在Python3的site-packages
目錄下查看是否存在文件cv2.so
$ cd ~/.virtualenvs/cv3/lib/python3.6/site-packages/
$ ls -l cv2.so
如果不存在(很不幸,我的就不存在,這好像是Python3.5+版本的通病),將cv2.cpython-36m-darwin.so
文件重命名為cv2.so
,更推薦保留原文件做備份:
$ cp cv2.cpython-36m-darwin.so cv2.so
最后嘗試打開python3的console,來看看能否順利導入
(cv3) YideMacBook-Pro:site-packages yitao$ python3
Python 3.6.1 (default, Apr 4 2017, 09:40:21)
[GCC 4.2.1 Compatible Apple LLVM 8.1.0 (clang-802.0.38)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import cv2
>>> cv2.__version__
'3.2.0'
成功啦!!