インタラクション2013のデモで教えてもらったRosalind Picard先生。チームの研究成果の一つにJackie Lee氏が開発したAttention Meterがありました。本年度の学生さんの卒業研究でぜひ使ってもらいたいな。。。と思い、とりあえずセットアップしてみました。以下、そのログです。僕のインストールした環境はosx10.8.3, xcode4.6.1, python2.7.2でした。
まず、下記のリポジトリより最新版(といっても2年前ですが)をダウンロードします。
Link: jackylee0424 (github)
git clone https://github.com/jackylee0424/Attention-Meter.git
次にpythonのバージョンを確認します。ターミナルでpython --versionとします。恐らく2.7.2になるはず。。。です。私のパソコンでは/usr/bin/pythonに入っているものでしたので、最初から入っているものと思います。違っていたらごめんなさい。ちなみにpython2.5などバージョンが2.7未満だった場合にopencvのインストールで以下の手順にはならないようですのでご注意ください。(なんか方法があると思いますがpython開発したことがないので。。。)
つづいてopencvを入れておく必要があります。私は(home)brewで入れました。(home)brewの入れ方は情報がありますのでぐぐってください。
brew install opencv
次にopencvのライブラリをpythonが参照できるように環境変数を設定します。ライブラリファイル自体をコピーしてしまう方法もあるようですが私はこちらの方法としました。お使いのシェル(僕はzsh)の設定ファイル(.bash_profileとか.zprofileなど)に以下を追加してターミナルを再起動します。opencvのlibの中にpython2.7というフォルダがない場合は恐らくpythonのバージョンが古かったためopencvのインストーラが作成しなかったのではないかと思います。いったんbrewでopencvをuninstallしてpython2.7以上をいれてからopencvを再インストールすると私はうまくいきました。
export PYTHONPATH=/usr/local/Cellar/opencv/2.4.4a/lib/python2.7/site-packages
で、最後です。
githubからダウンロードしたAttention-Meter/pythonに移動して以下を入力すると実行できると思います。
python attention.py
実行すると下記のようになります。恥ずかしいですが。。。
で、私はこれではうまくいかなかったのでメモとして書きます。
airやimacのように内蔵カメラが1台のみ接続された環境では恐らく問題なく動作すると思います。私はproを閉じた状態で使いディスプレイとしてcinemaディスプレイをつけています。つまり、見ているディスプレイのカメラは2番目のカメラになるんですね。このため上記では動作しません。で、attention.pyを一部変更します。
406行目くらいにある以下の行の0を1にするだけです。カメラがたくさんついている環境であればこの数字を変更してみるといいと思います。
capture = cv.CreateCameraCapture (0) #この(0)を(1)にする
あと、処理能力がおいつかずフレーム落ちすることが多々ありました。そこでカメラのキャプチャサイズを指定する以下の2行を上記の変更の下に追加しました。変更前はFPSが5くらいでしたが変更後は100越え!になりました。
cv.SetCaptureProperty(capture, cv.CV_CAP_PROP_FRAME_WIDTH, 320) cv.SetCaptureProperty(capture, cv.CV_CAP_PROP_FRAME_HEIGHT, 240)
てなところです。古い情報ですし、そもそも使われていないかもしれませんが、誰かのためになるかもしれませんので。というか自分のためですね。