Google Face Detection se bloque lors de la conversion en image et tente de détecter le visage

Je crée un appareil photo personnalisé avec des filters. Lorsque j'ajoute la ligne suivante, il se bloque sans montrer d'exception.

// Définition de la sortie video

func setupBuffer() { videoBuffer = AVCaptureVideoDataOutput() videoBuffer?.alwaysDiscardsLateVideoFrames = true videoBuffer?.videoSettings = [(kCVPixelBufferPixelFormatTypeKey as NSSsortingng): NSNumber(value: kCVPixelFormatType_32RGBA)] videoBuffer?.setSampleBufferDelegate(self, queue: DispatchQueue.main) captureSession?.addOutput(videoBuffer) } public func captureOutput(_ captureOutput: AVCaptureOutput!, didOutputSampleBuffer sampleBuffer: CMSampleBuffer!, from connection: AVCaptureConnection!) { if connection.videoOrientation != .portrait { connection.videoOrientation = .portrait } guard let image = GMVUtility.sampleBufferTo32RGBA(sampleBuffer) else { print("No Image 😂") return } pixelBuffer = CMSampleBufferGetImageBuffer(sampleBuffer) ciImage = CIImage(cvImageBuffer: pixelBuffer!, options: CMCopyDictionaryOfAttachments(kCFAllocatorDefault, sampleBuffer, kCMAttachmentMode_ShouldPropagate)as! [Ssortingng : Any]?) CameraView.filter = CIFilter(name: "CIPhotoEffectProcess") CameraView.filter?.setValue(ciImage, forKey: kCIInputImageKey) let cgimg = CameraView.context.createCGImage(CameraView.filter!.outputImage!, from: ciImage.extent) DispatchQueue.main.async { self.preview.image = UIImage(cgImage: cgimg!) } } 

Mais il s'écrase sur –

  guard let image = GMVUtility.sampleBufferTo32RGBA(sampleBuffer) else { print("No Image 😂") return } 

Lorsque je passe une image créée à partir de CIImage, elle ne reconnaît pas le visage dans l'image. Le file de code complet est https://www.dropbox.com/s/y1ewd1sh18h3ezj/CameraView.swift.zip?dl=0

entrez la description de l'image ici

1) Créer une queue séparée pour le tampon.

  fileprivate var videoDataOutputQueue = DispatchQueue(label: "VideoDataOutputQueue") 

2) Configurer le tampon avec ceci

  let videoBuffer = AVCaptureVideoDataOutput() videoBuffer?.alwaysDiscardsLateVideoFrames = true videoBuffer?.videoSettings = [(kCVPixelBufferPixelFormatTypeKey as NSSsortingng): NSNumber(value: kCVPixelFormatType_32BGRA)] videoBuffer?.setSampleBufferDelegate(self, queue: videoDataOutputQueue ) // captureSession?.addOutput(videoBuffer)