brewでインストールしたOpenCV 3をpyenvのvirtualenv環境で使う

brewOpenCV 3を入れた場合、pyenvで作成したvirtualenv環境では、デフォルトでimport cv2ができない。
numpyのインストールと、OpenCV 3へのシンボリックリンク作成が必要なようなのでメモ。

環境

手順

まずはOpenCV 3を使いたいpythonのvirtualenv環境を有効化する。
便宜的に、環境作成からの手順を載せる。

$ pyenv virtualenv 3.5.2 opencv-test
$ pyenv local opencv-test

環境を有効化したら、pipでnumpyを導入する。

$ pip install numpy

次にbrewでインストールされたOpenCV 3の場所を確認する。
恐らくは下記辺りに落ちているはず。
インストール時のバージョン等によって細部は異なる。

/usr/local/Cellar/opencv3/3.0.0/lib/python3.4/site-packages/cv2.so

自分の場合はHEADからインストールを行ったので、下記のようになった。

/usr/local/Cellar/opencv3/HEAD-300f923_4/lib/python3.5/site-packages/cv2.cpython-35m-darwin.so

ここで、おもむろにPythonの対話型シェルを起動し、virtualenv環境のsite-packagesの場所を調べる。

$ python
>>> import site; site.getsitepackages()
['/Users/hoge/.pyenv/versions/opencv-test/lib/python3.5/site-packages']

恐らく上記のような感じで表示されるはず。
上記フォルダに移動し、OpenCV 3へのシンボリックリンクを生成する。

$ cd /Users/hoge/.pyenv/versions/opencv-test/lib/python3.5/site-packages
$ ln -s /usr/local/Cellar/opencv3/HEAD-300f923_4/lib/python3.5/site-packages/cv2.cpython-35m-darwin.so ./

最後に、きちんとインポートできるかおよびOpenCVのバージョンを確認する。
virtualenvの環境が有効な箇所に移動し、Pythonの対話型シェルを起動。

$ python
>>> import cv2
>>> cv2.__version__
'3.1.0-dev'

これでOpenCV 3が、pyenvのvirtualenv環境で使用できるようになった。

参照

Mac OS X で OpenCV 3 + Python 2/3 の開発環境を整備する方法 – ymyzk’s blog
site-packagesの場所を確認する - プログラムは、用いる言葉の選択で決まる