CIFilter filterWithCVPixelBuffer, возвращающий ноль в iOS - PullRequest
0 голосов
/ 22 января 2019

Я пытаюсь создать CIFilter, используя filterWithCVPixelBuffer, и он возвращает ноль.Вот что я пытаюсь сделать:

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.

Ответы [ 2 ]

0 голосов
/ 30 января 2019

Проблема была в свойствах NSDictionary.Я должен был просто передать фото.метаданные.Таким образом, вызов функции будет выглядеть так:

CIFilter * ciFilter = [CIFilter filterWithCVPixelBuffer:photo.pixelBuffer properties:photo.metedata options:nil];

Конечно, вы можете передать NSDictionary, содержащий желаемый CIRAWFilterOption(s).

0 голосов
/ 23 января 2019

I думаю Я нашел ответ в документации в заголовочном файле:

Возвращает CIFilter, который, в свою очередь, возвращает правильно обработанный CIImage как "outputImage".

1007 * Обратите внимания, что при использовании этого инициализатора, вы должны пройти в CVPixelBufferRef с одним из следующих типов форматов Raw пиксельных kCVPixelFormatType_14Bayer_GRBG, kCVPixelFormatType_14Bayer_RGGB, kCVPixelFormatType_14Bayer_BGGR, kCVPixelFormatType_14Bayer_GBRG, а также вложение корневых свойств
из CMSampleBufferRef .

Так что я думаю, что этот метод следует использовать, когда у вас есть CMSampleBuffer, и он неосуществим, если вы приходите с AVCapturePhoto.

...