Je crée un appareil photo personnalisé avec des filtres. Lorsque j'ajoute la ligne suivante, il se bloque sans montrer d'exception.Google Face Detection se bloque lors de la conversion en image et en essayant de détecter le visage
// Réglage de la sortie vidéo
func setupBuffer() {
videoBuffer = AVCaptureVideoDataOutput()
videoBuffer?.alwaysDiscardsLateVideoFrames = true
videoBuffer?.videoSettings = [(kCVPixelBufferPixelFormatTypeKey as NSString): 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! [String : 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'écraser sur -
guard let image = GMVUtility.sampleBufferTo32RGBA(sampleBuffer) else {
print("No Image ")
return
}
Quand je passe l'image qui est créée à partir CIImage, il ne reconnaît pas le visage dans l'image. fichier de code complet est https://www.dropbox.com/s/y1ewd1sh18h3ezj/CameraView.swift.zip?dl=0
Vous devez mettre en place un point d'arrêt d'exception pour attraper le message d'erreur exact. –
J'ai ajouté cela, mais il plante quelque part dans le cadre. Je n'ai pas accès au code. – ChanWarde
Avez-vous déterminé si le problème concerne le cadre lui-même ou la façon dont vous appelez le cadre? Essayez d'exécuter l'un des exemples d'applications pour le framework. –