Skip to content

Instantly share code, notes, and snippets.

@AdibContractorCC
Last active June 14, 2017 18:33
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save AdibContractorCC/b4887591b9a9d3e8aa84015780cbb5f0 to your computer and use it in GitHub Desktop.
Save AdibContractorCC/b4887591b9a9d3e8aa84015780cbb5f0 to your computer and use it in GitHub Desktop.
Detect faces from live camera capture
import Foundation
import UIKit
import AVFoundation
import Vision
class LiveCaptureViewController: UIViewController {
public let cameraCapture = CameraCapture()
private var videoPreviewLayer : AVCaptureVideoPreviewLayer?
override func viewDidLoad()
{
super.viewDidLoad()
cameraCapture.delegate = self
videoPreviewLayer = AVCaptureVideoPreviewLayer(session: cameraCapture.captureSession)
videoPreviewLayer!.videoGravity = AVLayerVideoGravity.resize
videoPreviewLayer!.connection?.videoOrientation = AVCaptureVideoOrientation.landscapeRight
view.layer.addSublayer(videoPreviewLayer!)
}
override func viewDidAppear(_ animated: Bool)
{
super.viewDidAppear(animated)
videoPreviewLayer!.frame = view.layer.bounds
}
override func didReceiveMemoryWarning()
{
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
override var shouldAutorotate: Bool {
return true
}
override var supportedInterfaceOrientations : UIInterfaceOrientationMask {
return .landscapeRight
}
func processBufferCaptured(buffer: CMSampleBuffer!, faceDetectionRequest: VNDetectFaceRectanglesRequest)
{
// Override this
}
}
extension LiveCaptureViewController : CameraCaptureDelegate {
func bufferCaptured(buffer: CMSampleBuffer!)
{
guard let pixelBuffer : CVPixelBuffer = CMSampleBufferGetImageBuffer(buffer) else { return }
let faceDetectionRequest = VNDetectFaceRectanglesRequest()
let myRequestHandler = VNImageRequestHandler(cvPixelBuffer: pixelBuffer, options: [:])
try! myRequestHandler.perform([faceDetectionRequest])
processBufferCaptured(buffer: buffer, faceDetectionRequest: faceDetectionRequest)
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment