我尝试从CMSampleBuffer捕获一个UIImage来读取文本。但是我总是得到这样的错误:
fatal error: unexpectedly found nil while unwrapping an Optional value我环顾四周,尝试了很多版本。但我总是得到相同的错误。
func captureOutput(_ captureOutput: AVCaptureOutput!, didOutputSampleBuffer sampleBuffer: CMSampleBuffer!, from connection: AVCaptureConnection!) {
let pixelBuffer = CMSampleBufferGetImageBuffer(sampleBuffer)
let image = CIImage(cvPixelBuffer: pixelBuffer!)
let uiImage = UIImage(cgImage: image.cgImage!)
}致以亲切的问候!
发布于 2016-12-09 06:31:34
仅当从CGImage创建CIImage时,CIImage.cgImage才适用。当您从像素缓冲区创建CIImage时,它没有基础CGImage,因此该属性为nil。
您可以使用initialize a UIImage direct from a CIImage,但它的工作方式将取决于渲染图像的位置/方式。(例如,在UIImageView中呈现CI支持的UIImage在iOS 9和更早版本中的性能很差,如果您是实时执行的话。)
发布于 2016-12-11 04:03:49
要通过CIImage获取UIImage,您应该使用CIContext。下面的是Obj-C代码:
CIContext *context = [CIContext contextWithOptions:nil];然后:
CGImageRef cgImage = [context createCGImage:yourCIImage fromRect:[yourCIImage extent] ];
UIImage *resultUIImage = [UIImage imageWithCGImage:cgImage scale:1.0 orientation:UIImageOrientationUp];这种方法声称它只使用GPU,因此速度很快。但是还有其他方法可以从CVPixelBuffer,获取UIImage,比如使用CGContextRef。
https://stackoverflow.com/questions/41046770
复制相似问题