我正在尝试使用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上运行代码。
答案 0 :(得分:0)
我认为我在头文件的文档中找到了答案:
返回一个CIFilter,该CIFilter随后将返回经过正确处理的CIImage作为“ outputImage”。
请注意,使用此初始值设定项时,您应传入CVPixelBufferRef,其具有以下Raw像素格式类型之一,即kCVPixelFormatType_14Bayer_GRBG,kCVPixelFormatType_14Bayer_RGGB,kCVPixelFormatType_14Bayer_BGGR,kCVPixelFormatType_14Bayer_GBRG 和CMS根属性。
因此,我想当您有CMSampleBuffer
时应使用此方法,而从AVCapturePhoto
来时则不可行。
答案 1 :(得分:0)
问题出在属性NSDictionary中。我应该简单地通过photo.metadata。 因此,函数调用如下所示:
CIFilter * ciFilter = [CIFilter filterWithCVPixelBuffer:photo.pixelBuffer properties:photo.metedata options:nil];
当然,您可以传递包含所需NSDictionary
的{{1}}。