[英]CIFilter filterWithCVPixelBuffer returning nil in iOS
我正在尝试使用filterWithCVPixelBuffer创建CIFilter,并且返回nil。 这就是我想要做的:
CFDictionaryRef options = CMCopyDictionaryOfAttachments(nil, photo.pixelBuffer, kCMAttachmentMode_ShouldPropagate);
CIFilter * ciFilter = [CIFilter filterWithCVPixelBuffer:photo.pixelBuffer properties:(__bridge NSDictionary*)options options:nil];
photo是提供给委托人的AVCapturePhoto的实例。 我正在使用iOS 12,并在iPhone7上运行代码。
问题出在属性NSDictionary中。 我应该简单地通过photo.metadata。 因此,函数调用如下所示:
CIFilter * ciFilter = [CIFilter filterWithCVPixelBuffer:photo.pixelBuffer properties:photo.metedata options:nil];
当然,您可以传递包含所需CIRAWFilterOption(s)
的NSDictionary
。
我想我在头文件的文档中找到了答案:
返回一个CIFilter,该CIFilter随后将返回经过正确处理的CIImage作为“ outputImage”。
注意,使用该初始值设定时,你应该在一个CVPixelBufferRef通过用下面的原始像素格式类型kCVPixelFormatType_14Bayer_GRBG,kCVPixelFormatType_14Bayer_RGGB,kCVPixelFormatType_14Bayer_BGGR,kCVPixelFormatType_14Bayer_GBRG以及从CMSampleBufferRef根属性附件中的一个。
因此,我猜想这种方法应该在有CMSampleBuffer
情况下使用,而从AVCapturePhoto
时不可行。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.