OpenCVをPythonで利用する on Mac
色々詰まったのでメモを残しておきます。
基本方針
ざっと検索する限り、NumPyというPythonパッケージを入れれると、もれなくOpenCVのPythonバインディングが付いてくるということが分かりました。
というわけでNumPyを入れることを目標とします。
Macでの方法
簡単に調べた感じでは、
1. Macportsを使う方法
2. Homebrewを使う方法
3. 地道に入れる方法
の3つがあるようです。
MacportsはNumPy(SciPy)の公式サイトで推奨されている(?)方法のようですが、Homebrew派なのでスルーします。
次に、Homebrewを使う方法ですが、Pythonをbrewで入れて、pipでインストールする方法なのですが、コレを試したら、segmentation faultでアカン感じのエラーウィンドウが出たのでやめました。Python2.6の方が安定してるよ、みたいな話もStackoverflowなどで見うけられましたが、そもそもPythonをサードパーティの管理ツールで入れることが、MacビルトインのPythonと競合するという話もあり、あまり好ましくないという意見もあります。
というわけで、最終的に地道に入れる方法を試しました。
試行錯誤の巻
pipでサクッとインストールできるという情報は得られていましたが、ビルトインの方ではpipが入っていません。が、pipはeasy_installで入れるので入れちゃいました。残念なのは、パッケージを入れる度に管理者権限が必要な点ですが、致し方ありません…。
$ sudo easy_install pip $ pip install numpy Requirement already satisfied (use --upgrade to upgrade): numpy in /System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python Cleaning up...
あれ?既に入ってるようなメッセージが出て来ました。かといって、import cv2
のようにしても見つからないと言われてしまいます。とりあえず言われたとおり--upgrade
オプションを付けてみました。
$ sudo pip install numpy --upgrade ... Successfully installed numpy Cleaning up...
沢山ログが出ましたが、上手くいったようです。
すると、、、何も変わりませんでしたorz
さて、そもそもcvなりcv2なり、そんな感じの名前のファイル・ディレクトリが、site-packagesにないとおかしいはずで、モジュールをサーチ出来ないってことは、現時点ではどこにもないということか、とかなんとか考えながら調べていたら、HomebrewでインストールしたOpenCVに、Pythonバインディングが入っていることが判明しました。
どうも、NumPyがインストールされている状態で、適切にパスなどをconfigureした後、OpenCVを入れると、自動で入ってくれることがあるような無いような感じで、ネット上の情報は錯綜していたようです。
とやかく考えてもしょうがないので、とりあえずシンボリックリンクを貼ってみました。
$ sudo ln -s /usr/local/Cellar/opencv/2.4.6.1/lib/python2.7/site-packages/* /Library/Python/2.7/site-packages/ $ python Python 2.7.2 (default, Oct 11 2012, 20:14:37) [GCC 4.2.1 Compatible Apple Clang 4.0 (tags/Apple/clang-418.0.60)] on darwin Type "help", "copyright", "credits" or "license" for more information. >>> import cv2
とりあえず、上手くいったようです。