iOS
Swift
CIDetector

CIDetectorを簡単に使うやつ

More than 1 year has passed since last update.

これ

https://gist.github.com/noppefoxwolf/96fc42a2b3c3e518f629ad2b5e8018c7

概要

CIDetectorは座標の変換とか、仮描画とかが面倒なのでその辺をいい感じにするやつ

使い方

検出する

let image = UIImage()
let faces = FaceDetector().detect(image)

で顔を検出する。facesはFace構造体の配列で以下のような構成

struct Face {
  private(set) var rect: CGRect!
  private(set) var mouth: CGPoint? = nil
  private(set) var leftEye: CGPoint? = nil
  private(set) var leftEyeClosed = false
  private(set) var rightEye: CGPoint? = nil
  private(set) var rightEyeClosed = false

  private(set) var hasSmile = false
  private(set) var faceAngle: Float? = nil
  private(set) var knownPerson = false

  var hasMouth:    Bool  { return mouth    != nil }
  var hasLeftEye:  Bool  { return leftEye  != nil }
  var hasRightEye: Bool { return  rightEye != nil }

  init(faceRect: CGRect) {
    self.rect = faceRect
  }
}

ここでのCGPointは普通に使える座標になっている。(上下反転してないやつ)

顔の位置をUIImageに焼く

let after = FaceDetector.displayDetectedPosition(beforeImage, faces: faces)

Simulator Screen Shot 2016.05.21 22.55.47.png

こんな感じ。