如何最好地从相机保存图像以便以后处理?

时间:2012-09-20 09:37:41

标签: ios core-graphics avfoundation

我正在使用AVCaptureVideoDataOutput从相机获取图像。我检查了captureOutput中的pixelBuffer:

- (void)captureOutput:(AVCaptureOutput *)captureOutput
     didOutputSampleBuffer:(CMSampleBufferRef)sampleBuffer
     fromConnection:(AVCaptureConnection *)connection {

    CVImageBufferRef pixelBuffer = CMSampleBufferGetImageBuffer(sampleBuffer);

如果我在pixelBuffer中找到了我想要的内容,那么我想要保存此图像以便以后进行图像处理。

我看到三种选择,我想知道哪种选择最好:

  1. 我可以保存sampleBuffer或制作副本
  2. 我可以保存pixelBuffer或制作副本
  3. 我可以从CGImage创建pixelBuffer并保存,稍后当我需要进行图像处理时,我可以使用CGBitmapContextGetData()取回位图进行操作。看起来这里有一堆不需要的副本,我可以不用。
  4. 哪个是保存位图以供以后处理的首选方法?我不需要保存位图超过几分钟,即无需保存到文件系统。如果答案是1或2,那么我可以保留缓冲区,还是需要通过执行mallocmemcpy来复制它们?

1 个答案:

答案 0 :(得分:0)

我做3)但你必须将像素缓冲区复制到新的malloced内存中,因为它只对你在回调中的短暂时刻有效。我使用这种技术每秒抓取30帧。