1
私はフィルタを備えたカスタムカメラを作成しています。次の行を追加すると、例外を表示せずにクラッシュします。画像に変換して顔を検出しようとすると、Google顔検出がクラッシュする
//ビデオ出力
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
でセットアップバッファ。 –
私はそれを追加しましたが、フレームワークのどこかでクラッシュしています。コードにアクセスすることはできません。 – ChanWarde
問題がフレームワーク自体にあるのか、それともフレームワークを呼び出す方法であるのかを判断しましたか?フレームワークのサンプルアプリケーションの1つを実行してみてください。 –