CIDetector を使って目線を入れてみるサンプル

CIDetector に関しては Apple がサンプル(SquareCam)を用意してくれていて、これを読めば大体の使い方はわかると思います。
ただ、写真を撮ったり様々な機能が盛り込まれていて大変なので、SquareCam を元に AVCaptureVideoPreviewLayer に CIDetector で目線を入れるサンプルを作ってみました。


Bitbucket に置いておくので興味のある方はどうぞ。

以下、このサンプルの簡単な説明です。

  • このサンプルは Apple の SquareCam とやっていることは変わらなくて、デバイスの回転、ズーム、写真を撮る、カメラを切り替える等の顔認識に関係ない部分を削除しています。
  • 左右の目の位置を確認してそれを元に目に黒い線を入れていますが、かなりいい加減に目線を入れているので目線が小さ過ぎたりすることもあります。
  • 回転のサポートを削除しているので iPhone を横向きにすると、faceDetector に渡す CIImage の向きが正しくなくなるので顔認識はできなくなります。しかし exifOrientation を設定している箇所で、前出のコードを使うとランドスケープでも検出できるようになります。が、目線を描くところでランドスケープ用に計算する必要があります。