从相机获取yuv平面格式图像 - iOS

时间:2012-09-10 09:40:46

标签: ios camera format

我正在使用AVFoundation使用captureStillImageAsynchronouslyFromConnection从相机捕捉静止图像(捕捉静止图像而不是视频帧)。这给了我一个CMSSampleBuffer类型的缓冲区,我称之为imageDataSampleBuffer。

据我所知,此缓冲区可以包含与媒体相关的任何类型的数据,并且在配置输出设置时确定数据类型。

对于输出设置,我创建了一个带有值的字典:AVVideoCodecJPEG for key:AVVideoCOdecKey。

没有其他编解码器选项。但是当我阅读AVFoundation编程指南> Media Capture时,我可以看到420f,420v,BGRA,jpeg是iPhone 3gs支持的可用编码格式(我正在使用)

我想将yuv420(即420v)格式的图像数据放入imageSampleBuffer。这可能吗?

如果我打印availableImageDataCodecTypes,我只得到JPEG 如果我打印availableImageDataCVPixelFormatTypes,我会得到三个数字875704422,875704438,111970369。

这三个数字是否有可能映射到420f,420v,BGRA?

如果是,我应该在输出设置中修改哪个键? 我尝试将值:[NSNumber numberWithInt:875704438]用于键:(id)kCVPixelBufferPixelFormatTypeKey。 它会起作用吗?

如果是,我该如何从imageSampleBuffer中提取这些数据?

另外,UIImage存储的格式是什么?可以是任何格式吗?它只是NSData的一些额外信息,使它被解释为图像吗?

1 个答案:

答案 0 :(得分:0)

我一直在尝试使用这种方法:

Raw image data from camera like "645 PRO"

我使用writeToFile保存数据,我一直在尝试使用irfan视图打开它。

但我无法验证保存的文件是否采用yuv格式,因为irfan视图会出现无法读取标题的错误。