OpenCVのサンプル


1.環境変数の設定

サンプルを動作させる前に、OpenCVのDLL等があるフォルダのパスを通しておく。
既定のままであれば、以下のフォルダに各種実行ファイル、及びDLL等が格納されている。

C:\Program Files\OpenCV\bin

パス設定手順

  1. コントロールパネル、もしくはマイコンピュータの右クリック「プロパティ」で「システム」を開く
  2. 詳細情報タブを選択
  3. 環境変数ボタンをクリック
    システムの詳細情報タブにある環境変数ボタンをクリック
  4. システム環境変数の欄で変数「path」を探して選択、その後編集ボタンをクリック
    システム環境変数欄で変数「path」を選択、その後編集ボタンをクリック
  5. 編集ボタンを押して、一番最後尾に先の格納フォルダのパスを入力
    変数「path」を編集し、パスを設定

以上で、サンプルなどに必要なパス設定が完了。

2.エッジ抽出サンプル

最初に静止画のエッジを抽出することができるサンプルを動かしてみよう。
既定のままであれば、以下のフォルダにサンプルの実行ファイルが格納されている。

C:\Program Files\OpenCV\samples\c

上記の中でエッジ抽出のサンプルは"edge.exe"である。
実行してみると、フルーツの絵(同フォルダ内の"fruits.jpg"、下の写真参照)のエッジを抽出したものが表示される。
ウィンドウの上部にあるスライドバーを動かすと、閾値が変更されて、その変遷を見ることができる。

この動きだけを見ると、いろいろと大変なことをしていそうだが、実際に"edge.c"を覗いてみると、実はGUIを作ったり、スライドバーから情報を受け取る準備をしているコードのほうが多く、エッジ抽出の処理自体は簡単な記述で行われていることがわかる。

元の画像とエッジ抽出後の画像
フルーツの写真(元)フルーツの写真(処理後)

3.顔認識サンプル

次に、顔認識サンプルを動かしてみよう。これに関しては、すでに接続されたカメラが必要となる。
実行ファイルは、先のエッジ抽出サンプルと同じフォルダにある"facedetect.exe"である。

実際に実行してみると、カメラの映像が表示されるとともに、顔に対してリアルタイムに「赤丸」が描画される。

とりあえずは、顔をいろいろと動かしてみたり、カメラをいろいろ誰かに向けてみたり、人形に向けてみたり、とあれこれ試してみることをお奨めする。

実際にサンプルを動かしてみると分かるが、正面顔ならともかく、横顔だと赤丸が付かない。
何故かといえば、このサンプルは「正面顔」の識別情報を使って、映像から顔を探知しているからである。
その為、正面顔には反応しやすいが、横顔に近づくにつれ認識精度が落ち、最後には認識されなくなるのだ。/p>

もうひとつ、同名称で"facedetect.cmd"がある。これは顔認識に使用する識別情報を変更したいときに利用する。
内容は、識別情報を指定した上で"facedetect.exe"を実行しているだけである。デフォルトでは、先に書いたように「正面顔」についての識別情報が指定されている。

facedetect.cmdの内容

facedetect --cascade="../../data/haarcascades/haarcascade_frontalface_alt.xml"

上で指定されている"haarcascade_frontalface_alt.xml"が、サンプルで使用された「正面顔」識別情報である。
つまり、上の"haarcascade_frontalface_alt.xml"を別の認識情報ファイルに変更すると、このサンプルは「正面顔」ではなく、別の認識プログラムとして動作することが可能なのである。
他の識別情報は、既定のままであれば以下のフォルダに入っている。

C:\Program Files\OpenCV\data\haarcascades

同じ顔認識でも「認識」の精度の違うものや、上体・下体認識、全身認識などといった情報もあるので、試してみるとよい。