Comment puis-je faire face à la détection en temps réel de même que la "Caméra" n'?
J'ai remarqué que AVCaptureStillImageOutput est obsolète après 10.0, donc j'utilise AVCapturePhotoOutput à la place. Toutefois, je trouve que l'image que j'ai enregistré pour la détection de visage n'est pas satisfait? Des idées?
Mise à JOUR
Après avoir essayer de @Shravya Boggarapu mentionné. Actuellement, j'utilise AVCaptureMetadataOutput
pour détecter le visage sans CIFaceDetector
. Il fonctionne comme prévu. Cependant, quand je suis en train de dessiner les limites de la face, il semble mislocated. Une idée?
let metaDataOutput = AVCaptureMetadataOutput()
captureSession.sessionPreset = AVCaptureSessionPresetPhoto
let backCamera = AVCaptureDevice.defaultDevice(withDeviceType: .builtInWideAngleCamera, mediaType: AVMediaTypeVideo, position: .back)
do {
let input = try AVCaptureDeviceInput(device: backCamera)
if (captureSession.canAddInput(input)) {
captureSession.addInput(input)
// MetadataOutput instead
if(captureSession.canAddOutput(metaDataOutput)) {
captureSession.addOutput(metaDataOutput)
metaDataOutput.setMetadataObjectsDelegate(self, queue: DispatchQueue.main)
metaDataOutput.metadataObjectTypes = [AVMetadataObjectTypeFace]
previewLayer = AVCaptureVideoPreviewLayer(session: captureSession)
previewLayer?.frame = cameraView.bounds
previewLayer?.videoGravity = AVLayerVideoGravityResizeAspectFill
cameraView.layer.addSublayer(previewLayer!)
captureSession.startRunning()
}
}
} catch {
print(error.localizedDescription)
}
et
extension CameraViewController: AVCaptureMetadataOutputObjectsDelegate {
func captureOutput(_ captureOutput: AVCaptureOutput!, didOutputMetadataObjects metadataObjects: [Any]!, from connection: AVCaptureConnection!) {
if findFaceControl {
findFaceControl = false
for metadataObject in metadataObjects {
if (metadataObject as AnyObject).type == AVMetadataObjectTypeFace {
print("