【发布时间】:2018-02-10 03:34:05
【问题描述】:
我正在创建一个带有滤镜的自定义相机。当我添加以下行时,它会崩溃而不显示任何异常。
//设置视频输出
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!)
}
}
但它正在崩溃 -
guard let image = GMVUtility.sampleBufferTo32RGBA(sampleBuffer) else {
print("No Image ????")
return
}
当我传递从 CIImage 创建的图像时,它无法识别图像中的人脸。 完整的代码文件是https://www.dropbox.com/s/y1ewd1sh18h3ezj/CameraView.swift.zip?dl=0
【问题讨论】:
-
你应该设置一个异常断点来捕捉确切的错误信息。
-
我添加了它,但它在框架中的某个地方崩溃了。我无权访问代码。
-
您确定问题出在框架本身还是您调用框架的方式?尝试运行该框架的示例应用之一。
-
运行良好。我只是将代码复制粘贴到我的项目中
-
为什么要使用主队列来处理 outputsampleBuffer??
标签: ios swift3 camera face-detection google-ios-vision