Как преобразовать CVPixelBuffer / CVImageBuffer в данные?

Моя камера делает снимок, улучшает его определенным образом и сохраняет.

Для этого я получаю входное изображение с камеры в виде CVPixelBuffer (завернутого в CMSampleBuffer). Я вношу некоторые изменения в буфер пикселей, а затем хочу преобразовать его в объект данных. Как мне это сделать?

Обратите внимание, что я не хочу преобразовывать буфер пикселей / буфер изображений в UIImage или CGImage, поскольку у них нет метаданных (например, EXIF). Мне нужен объект данных. Как мне получить его из CVPixelBuffer / CVImageBuffer?


PS: Я попытался позвонить AVCapturePhotoOutput.jpegPhotoDataRepresentation(), но не смог сказать: «Не образец буфера JPEG». Это имеет смысл, поскольку CMSampleBuffer содержит буфер пикселей (растровое изображение), а не JPEG.


person Kartick Vaddadi    schedule 11.07.2017    source источник


Ответы (1)


Как вы сказали, вы можете получить CMSampleBuffer, тогда вы можете получить его, используя

NSData *myata = [AVCaptureStillImageOutput jpegStillImageNSDataRepresentation:<your_cmsample_buffer_obj‌​>];
person bestiosdeveloper    schedule 11.07.2017
comment
AVCaptureStillImageOutput уже устарел, когда вы писали этот ответ. - person xaphod; 16.08.2018