PythonからOpenCV 2.2を使う(MacOSX SnowLeopard + homebrew)

Pythonを使って画像処理をやってみたいなと思っていたところ、こんな記事を発見。

Starting with OpenCV release 2.2, OpenCV will have completed it's new Python interface to cover all the C and C++ functions directly using numpy arrays.

http://opencv.willowgarage.com/wiki/PythonInterface

早速、PythonからOpenCV 2.2を使ってみた。

環境

インストール

macportsヤメてhomebrewにしました。でopencvをsnow leopardに入れる方法 - ( ꒪⌓꒪) ゆるよろ日記を参考に、homebrewを使ってOpenCVをインストール。後はOpenCVPythonバインディング(動的ライブラリ)であるcv.soをPYTHONPATHの通った場所にコピーすれば、PythonからOpenCVが使えるようになっているはず。
Macに初めから入っているPythonを使う場合の手順は以下のようになります。

brew install opencv
cp /usr/local/Cellar/opencv/2.2/lib/python2.6/site-packages/cv.so /Library/Python/2.6/site-packages/

webカメラで取得した画像をそのまま表示

とりあえず簡単なデモを試してみたいなとググッてみると、ちょうどいいサンプルを発見。
http://www.betasix.net/opencv-2-2-python-examples/

import cv
import time

cv.NamedWindow("camera", 1)
capture = cv.CreateCameraCapture(0)

width = None #leave None for auto-detection
height = None #leave None for auto-detection

if width is None:
    width = int(cv.GetCaptureProperty(capture, cv.CV_CAP_PROP_FRAME_WIDTH))
else:
	cv.SetCaptureProperty(capture,cv.CV_CAP_PROP_FRAME_WIDTH,width)    

if height is None:
	height = int(cv.GetCaptureProperty(capture, cv.CV_CAP_PROP_FRAME_HEIGHT))
else:
	cv.SetCaptureProperty(capture,cv.CV_CAP_PROP_FRAME_HEIGHT,height) 

while True:
    img = cv.QueryFrame(capture)
    cv.ShowImage("camera", img)
    k = cv.WaitKey(10);
    if k == 'f':
        break

動いた!
次は、ZBar bar code readerと絡ませて遊んでみたい。