Ios 如何使用CMSampleBufferGetImageBuffer在Swift中正确获取ImageBuffer?
“CMSampleBufferGetImageBuffer”已被属性替换 “CMSampleBuffer.imageBuffer” CMSampleBufferGet.ImageBuffer不起作用:)似乎参数也在改变,与Swift 4.2有关Ios 如何使用CMSampleBufferGetImageBuffer在Swift中正确获取ImageBuffer?,ios,ios12,cmsamplebuffer,Ios,Ios12,Cmsamplebuffer,“CMSampleBufferGetImageBuffer”已被属性替换 “CMSampleBuffer.imageBuffer” CMSampleBufferGet.ImageBuffer不起作用:)似乎参数也在改变,与Swift 4.2有关 guard let pixelBuffer: CVPixelBuffer = CMSampleBufferGetImageBuffer(sampleBuffer) else { return } 整个功能。以防万一 func captureOu
guard let pixelBuffer: CVPixelBuffer = CMSampleBufferGetImageBuffer(sampleBuffer) else { return }
整个功能。以防万一
func captureOutput(_ output: AVCaptureOutput, didOutput sampleBuffer: CMSampleBuffer, from connection: AVCaptureConnection) {
// print("Camera was able to capture a frame:", Date())
guard let pixelBuffer: CVPixelBuffer = CMSampleBufferGetImageBuffer(sampleBuffer) else { return }
guard let model = try? VNCoreMLModel(for: ARS().model) else { return }
let request = VNCoreMLRequest(model: model) { (finishedReq, err) in
guard let results = finishedReq.results as? [VNClassificationObservation] else { return }
guard let firstObservation = results.first else { return }
print(firstObservation.identifier, firstObservation.confidence)
DispatchQueue.main.async {
self.identifierLabel.text = "\(firstObservation.identifier) \(firstObservation.confidence * 100)"
}
}
try? VNImageRequestHandler(cvPixelBuffer: pixelBuffer, options: [:]).perform([request])
}
是否有人试图解决这个问题,或者对新语法有参考
func captureOutput(_ output: AVCaptureOutput, didOutput sampleBuffer: CMSampleBuffer, from connection: AVCaptureConnection) {
connection.videoOrientation = AVCaptureVideoOrientation.portrait
let imageBuffer: CVPixelBuffer = sampleBuffer.imageBuffer!
let ciimage : CIImage = CIImage(cvPixelBuffer: imageBuffer)
let image : UIImage = self.convert(cmage: ciimage)
}
// Convert CIImage to CGImage
func convert(cmage:CIImage) -> UIImage {
let context:CIContext = CIContext.init(options: nil)
let cgImage:CGImage = context.createCGImage(cmage, from: cmage.extent)!
let image:UIImage = UIImage.init(cgImage: cgImage)
return image
}