CIFilter filterWithCVPixelBuffer 在 iOS 中返回 nil
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 上的代码。
我认为我在头文件中的文档中找到了答案:
Returns a CIFilter that will in turn return a properly processed CIImage as "outputImage".
Note that when using this initializer, you should pass in a CVPixelBufferRef with one of the following Raw pixel format types kCVPixelFormatType_14Bayer_GRBG, kCVPixelFormatType_14Bayer_RGGB, kCVPixelFormatType_14Bayer_BGGR, kCVPixelFormatType_14Bayer_GBRG as well as the root properties attachment from the CMSampleBufferRef.
所以我想当你有 CMSampleBuffer
时应该使用这种方法,而当来自 AVCapturePhoto
时不可行。
问题出在属性 NSDictionary 中。我应该简单地通过 photo.metadata。
所以函数调用看起来像:
CIFilter * ciFilter = [CIFilter filterWithCVPixelBuffer:photo.pixelBuffer properties:photo.metedata options:nil];
当然,您可以传递包含所需 CIRAWFilterOption(s)
的 NSDictionary
。
我正在尝试使用 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 上的代码。
我认为我在头文件中的文档中找到了答案:
Returns a CIFilter that will in turn return a properly processed CIImage as "outputImage".
Note that when using this initializer, you should pass in a CVPixelBufferRef with one of the following Raw pixel format types kCVPixelFormatType_14Bayer_GRBG, kCVPixelFormatType_14Bayer_RGGB, kCVPixelFormatType_14Bayer_BGGR, kCVPixelFormatType_14Bayer_GBRG as well as the root properties attachment from the CMSampleBufferRef.
所以我想当你有 CMSampleBuffer
时应该使用这种方法,而当来自 AVCapturePhoto
时不可行。
问题出在属性 NSDictionary 中。我应该简单地通过 photo.metadata。 所以函数调用看起来像:
CIFilter * ciFilter = [CIFilter filterWithCVPixelBuffer:photo.pixelBuffer properties:photo.metedata options:nil];
当然,您可以传递包含所需 CIRAWFilterOption(s)
的 NSDictionary
。