マイコミジャーナル

知りたい!を刺激する総合専門サイト


  1. パソコン

  2. アップル
  3. コラム
  4. OS X ハッキング!

【コラム】

OS X ハッキング!

203 OpenCV+iSightで顔を認識?

2006/11/09

海上忍

Core 2 Duo搭載の二代目MacBookが発売になりました。初代が5月16日発売ですから、ほぼ半年ぶりのモデルチェンジです。ユーザとしては、半年で25%のスピードアップは微妙に悔しくもありますが……機会があれば、ユーザならではの視点で二代目を検証してみたいと思います。

さて、今回は「OpenCV」について。既報のとおり、画像の変形や認識などイメージング処理を目的としたクロスプラットフォーム指向のライブラリだが、OS Xユーザ要注目の機能もいくつか備えている。活用次第では、いろいろな力を発揮しそうなのだ。

OpenCVの特徴、そして導入の下準備

OpenCVの開発はクロスプラットフォーム指向で行われ、特定のハードウェアに依存しない。Intelが関与しているプロジェクトなだけに、メインターゲットはやはり"Wintel"ということになるが、POSIX互換機能を備えるUNIX系OSでも動作する。Mac OS Xの場合、今夏あたりからQuickTimeへのポーティングが進み出し、限定的ながらも動画の書き出しなどの機能がサポートされるなど、今後に期待できる状況だ。

このOpenCVには、ビデオカメラからキャプチャした画像をリアルタイムに分析するという面白い機能がある。IEEE1394カメラを扱うためのライブラリ「libdc1394」に依存するこの機能は、IIDC準拠のカメラをサポートしている。そう、前回取り上げた「iSight」を装備したMacにOpenCVをインストールし、それなりのプログラムを動作させれば、iSightに映る画像を認識させることができるのだ。

ただし、JPEGやTIFFといった静止画は、今のところibjpegやlibtiffといったオープンソースのライブラリに依存しているため、OS X標準の開発環境では利用価値が低い。Finkなどのパッケージ導入ツールを利用し、最低でもpkgconfigとlibjpeg、libpng3とlibtiffを導入してからコンパイルしたほうがいいだろう。作業は簡単、Terminalから「fink install パッケージ名」を実行し、質問を受けた場合にはすべて「y」と答えればOKだ。

OS X 10.4(Tiger)でコンパイルする手順は、以下のとおり。OpenCVプロジェクトのサイトからOpenCV 1.0のソースコード(opencv-linux)をダウンロードし、カレントディレクトリに「opencv-1.0.0.tar.gz」が置かれた状態で作業を始めてほしい。

$ tar xzf opencv-1.0.0.tar.gz
$ cd opencv-1.0.0
$ ./configure --with-python LDFLAGS=-L/sw/lib CPPFLAGS=-I/sw/include
$ make
$ sudo make install

ライブラリのインストール後は、以下の手順に従い、付属のサンプルコードをコンパイルする。このとき、pkg-configコマンドがない環境ではエラーが発生するため、前述したとおりFinkを利用して準備しておくこと。

$ export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig
$ cd samples/c
$ sh build_all.sh

「lkdemo」で鼻の動きを追尾してみました

このsamplesディレクトリには、20種以上のサンプルコードが収録されている。ドキュメントは付属しないため、ソースコードを読むしか使い方を知る方法はないが、まずは「drawing」と「morphology」を実行してみよう(カレントディレクトリのコマンドを実行するときには「./」を付けることを忘れずに)。線や矩形領域の描画といった基本機能から、数種類の方法で画像を変形(モーフィング)する機能など、OpenCVの片鱗を知ることはできるはずだ。

なかでも面白いのは、iSightからキャプチャした動画をリアルタイムに分析する「lkdemo」と「facedetect」。前者は、被写体上をクリックした位置を点として表示し、被写体の動きにつれ、その位置を移動するというデモを見せてくれる。後者は、以下の要領でコマンドを実行すると、被写体から人間の顔面を自動的に認識し、○で囲み追従するデモを見ることができる。この機能が洗練されれば、iSightでユーザを認識してログオンといった処理が可能になるだけに、期待も増すというもの。OpenCVを利用したアプリケーションの登場を待つ!

$ ./facedetect --cascade='../../data/haarcascades/haarcascade_frontalface_default.xml'

「lkdemo」でボーグ化されたピカード艦長(ロキュータス)の鼻の部分をマーク。最初はうまく追尾できたが、次第にマークがズレてきた

「facedetect」ではピカード艦長の胸像はしっかりと認識されたが、イタチのぬいぐるみは人間として認識されないらしく、常に腹部がマークされていた


画像で見るニュース(パソコン)

スペシャル

  • Windows 7 大百科
  • パソコン/ビジネスPC メールマガジン創刊のお知らせ

特別企画


注目サイト