22 Mar 2009

macbookでopencv

先日購入したmacbookにopencvをインストールしました。ものすごく簡単で感動的でした。

インストール

macportsからインストールするだけです。

$ sudo port install opencv

このコマンドひとつでokです。カメラとの接続も、iSightを自動的に認識してくれるようなので、ほんとうに簡単。linuxのときの苦労はなんだったんだろうかという気になってきます。

バージョンは1.0.0なので、新しいもので遊びたい人はsourceForgeからソースを落としてくる必要があります。またインストールには結構時間がかかりました(1時間くらい?)。

サンプルプログラムを動かす

早速cのサンプルプログラムを動かしてみましょう。portからのインストール先は/opt/local/以下になります。サンプルプログラムは/opt/local/share/opencv/samples/c/にあります。とりあえずホームに作業ディレクトリを作ってコピーします。

$ cd
$ mkdir opencvWorks
$ cd opencvWorks
$ cp -r /opt/local/share/opencv/samples/c/ .

次はコンパイルです。サンプルプログラムはいろいろあるのですが、opencvといえば顔検出ということで、今回は顔検出のプログラムにしてみます。プログラム名は facedetect.cです。

$ gcc -o facedetect facedetect.c -lcv -lcxcore -lcvaux -lhighgui -L/opt/local/lib -I/opt/local/include/opencv

いろいろ書いてありますが、ライブラリ4つ(cv, cxcore, cvaux, highgui)をリンクし、ライブラリとヘッダファイルのパスを指定しているだけです。

これでコンパイルできました。動かしてみましょう。

$ ./facedetect --cascade="/opt/local/share/opencv/haarcascades/haarcascade_frontalface_alt2.xml"

これで動きます。自動的にiSightが起動し、顔検出をして、顔の部分に赤い丸が描かれていると思います。何かキーを押すと終了します。ちなみに引数のcascadeというのは、顔検出のアルゴリズムに必要なデータです。

笑い男

顔検出といえば、べたですが、やっぱり笑い男ですよね。というわけで作ってみました。facedetectのサンプルプログラムを改良し、丸のかわりに笑い男のロゴを描画するようにすれば、笑い男が目をハックしているような映像が簡単に作れます。