Skip to content

Instantly share code, notes, and snippets.

@s1ddok
Last active December 28, 2018 15:33
Show Gist options
  • Save s1ddok/34b0d599474496620ba90ad549b00c86 to your computer and use it in GitHub Desktop.
Save s1ddok/34b0d599474496620ba90ad549b00c86 to your computer and use it in GitHub Desktop.
Vision Face Detector
public class VisionFaceDetector {
private var faceRectangleRequest: VNDetectFaceRectanglesRequest!
public var boundingBoxes: [CGRect] = []
public init() {
self.faceRectangleRequest = VNDetectFaceRectanglesRequest(completionHandler: { [weak self] (request, error) in
self?.handleFaces(request: request, error: error)
})
self.faceRectangleRequest.preferBackgroundProcessing = false
}
public func detectFaces(in image: UIImage) {
let handler = VNImageRequestHandler(cgImage: image.cgImage!, options: [:])
do { try handler.perform([self.faceRectangleRequest]) }
catch { fatalError(error.localizedDescription) }
}
private func handleFaces(request: VNRequest, error: Error?) {
guard error == nil else {
fatalError(error!.localizedDescription)
}
guard let results = request.results as? [VNFaceObservation] else {
fatalError()
}
guard results.count > 0 && results.count < 3 else {
return
}
self.boundingBoxes = results.map { $0.boundingBox }
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment