Python+OpenCV+brew on Mavericksの環境構築

ハマりました。

どうやらpyenvとOpenCVの仲が非常に悪いらしい。
なので、とりあえずpyenvを一回止めて、systemのpythonOpenCVを入れるところから始めました。
pyenvをインストールしたときに.bash_profileか.bashrcあたりのどこかに

if which pyenv > /dev/null; then eval "$(pyenv init -)"; fi
export PATH=$HOME/.pyenv/bin:$PATH
export PATH="$HOME/.pyenv/shims:$PATH"

みたいな呪文を書いたでしょうから、これをコメントアウトします。
そうしたら、まずはOpenCVの情報を見てみましょう。

opencv: stable 2.4.9, HEAD
http://opencv.org/
Not installed
/usr/local/Cellar/opencv/2.4.9 (219 files, 38M) *
Built from source with: --with-qt, --with-tbb
From: https://github.com/Homebrew/homebrew/commits/master/Library/Formula/opencv.rb
==> Dependencies
Build: cmake ✔, pkg-config ✔
Required: jasper ✔, jpeg ✔, libpng ✔, libtiff ✔
Recommended: eigen ✔, openexr ✔
Optional: openni ✔, qt ✔, tbb ✔, ffmpeg
==> Options

    • 32-bit

Build 32-bit only

Build using C++11 mode

    • with-cuda

Build with CUDA support

Build with ffmpeg support

Build with Java support

    • with-openni

Build with openni support

    • with-qt

Build the Qt4 backend to HighGUI

    • with-tbb

Enable parallel code in OpenCV using Intel TBB

    • with-tests

Build with accuracy & performance tests

    • without-eigen

Build without eigen support

Disable GPU code in OpenCV using OpenCL

    • without-openexr

Build without openexr support

    • HEAD

install HEAD version

DependenciesのOptionalは後々あると便利かもしれないので、とりあえず全部入れました。
で、brewOpenCVをインストールするんですが、先にPYTHONPATHを編集しましょう
情報によっては、インストール後に編集するのもあるんですが、後に編集するとモジュールのimport時にSegmentation Faultで落ちます。

export PYTHONPATH="/usr/local/lib/python2.7/site-packages:$PYTHONPATH"

これを.bash_profileに書いてsource。
できたらOpenCVのインストールです。

brew install opencv --with-eigen --with-jasper --with-libtiff --with-qt --with-tbb --env=std

withオプションでOptionalな依存パッケージを入れられます。
インストールには結構時間がかかるので、コーヒーでも飲んで待ちましょう。

終わったらサンプルプログラムを通してみます。

import cv2
cap = cv2.VideoCapture(0)
ret, im = cap.read()
cv2.imwrite('cap.jpg', im)

これでMacWebカメラで画像が撮影できます。感動!

pyenvにも対応できる方法はもうちょっと模索してみよう。

【参考】PythonでOpenCVを利用するのは簡単そうだ