OpenCV3.2のニュースを見かけて、そういえば最近画像処理してないな!と思い立った。
本当であればさくっと環境を整えて、Lennaと戯れるつもりだった。
Lennaについて: The Rest of the Lenna Story
そこからimport cv2するまでの長い長い道のりの記録。
なにしようとしたの?
macOS Sierra上のpyenv-virtualenv環境でimport cv2しようとした。
やったこと
軽い気持ちでbrewでOpenCVを入れようとする
$ brew tap homebrew/science $ brew install opencv3 --with-python3 --with-ffmpeg --with-tbb --with-contrib
この時の僕はこれから2時間ググり続けるとは知らず、
「依存関係もいっぱいあるだろうしなー!なんかブログのネタになるような処理実装できるかなー」
などとのんきに構えていた。
Updating Homebrew... ==> Auto-updated Homebrew! ###ログ中略### ==> cmake .. -DCMAKE_C_FLAGS_RELEASE=-DNDEBUG -DCMAKE_CXX_FLAGS_RELEASE=-DNDEBUG -DCMAKE_INSTALL_PREFIX=/usr/local/Cellar/opencv3/3.1.0_4 -DCMAKE_BUILD_TYPE=Release -DCMAKE_FIND_FRAMEWORK=LAST -DCMAKE_VER ==> make
そしてmakeまではなんとなくうまく行っていた。
問題: QTKitがない
/tmp/opencv3-20161228-85298-1ls4do/opencv-3.1.0/modules/videoio/src/cap_qtkit.mm:46:9: fatal error: 'QTKit/QTKit.h' file not found #import <QTKit/QTKit.h> ^ 1 error generated. make[2]: *** [modules/videoio/CMakeFiles/opencv_videoio.dir/src/cap_qtkit.mm.o] Error 1 make[2]: *** Waiting for unfinished jobs.... make[1]: *** [modules/videoio/CMakeFiles/opencv_videoio.dir/all] Error 2 make: *** [all] Error 2
ああああああああああ(なんだかんだで1時間位悩んで試行錯誤してしまった)
解決編
macOS SierraではQTKitがなくなっていた。
ないものは仕方がないらしいので解決されたものを使うことに。
github.com
HEADのオプションをつけて再度実行
$ brew install opencv3 --HEAD --with-python3 --with-ffmpeg --with-tbb --with-contrib Updating Homebrew... ==> Auto-updated Homebrew! ###ログ中略### ==> Summary 🍺 /usr/local/Cellar/opencv3/HEAD-7dd3723_4: 499 files, 67.3M, built in 22 minutes 1 second $ brew link opencv3 --force # <= これとても忘れがちなので気をつける(10分位悩んだ) $ python3 >>> import cv2 >>> print(cv2.__version__) 3.2.0-dev
とバージョンを確認して解決完了
# 軽い気持ちでpyenv-virtualenvで環境を用意しようとする
さっき詰まったのにここまでくれば余裕やろとpyenv virtualenv環境を用意しはじめた。
問題: 当然cv2がない
$ pyenv virtualenv 3.5.2 MyOpenCVEnv # 名前は適当に $ mkdir opencv_test $ cd opencv_test $ pyenv local MyOpenCVEnv (MyOpenCVEnv)$ python (MyOpenCVEnv)$ import cv2 Traceback (most recent call last): File "<stdin>", line 1, in <module> ImportError: No module named 'cv2'
あーそりゃそうだ。えっ?(1時間程度悩む)
解決編
PyEnvのsite-packagesにcv2.soを入れてあげる必要がある。
cd ~/.pyenv/versions/OpenCV/lib/python3.5/site-packages/ ln -s /usr/local/lib/python3.6/site-packages/cv2.cpython-36m-darwin.so cv2.so cd ~/opencv_test (MyOpenCVEnv)$ python >>> import cv2 >>> print(cv2.__version__) 3.2.0-dev
とバージョンを確認して解決完了
(Pythonのバージョンが3.5と3.6になっている点について問題があれば別途報告することとして今回は完了とした。)
ちからつきた
ホントはもっと色々やりたかった。
せっかく休みになるので明日から本気出す。