Last active
December 28, 2018 15:33
-
-
Save s1ddok/34b0d599474496620ba90ad549b00c86 to your computer and use it in GitHub Desktop.
Vision Face Detector
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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