2012-09-20 2 views
0

카메라에서 AVCaptureVideoDataOutput을 사용하여 이미지를 가져오고 있습니다. 내 captureOutput에 pixelBuffer을 검사 :나중에 처리하기 위해 카메라에서 이미지를 저장하는 가장 좋은 방법은 무엇입니까?

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

    CVImageBufferRef pixelBuffer = CMSampleBufferGetImageBuffer(sampleBuffer); 

나는 내가 pixelBuffer에서 원하는 것을 찾을 수 있다면, 나중에 이미지 처리에 이미지를 저장합니다.

나는 세 가지 옵션을보고, 내가 사용하는 가장 적합한 궁금 :

  1. 내가 sampleBuffer을 저장하거나 사본이
  2. 내가 pixelBuffer을 절약 할 수 있도록하거나
  3. 을의 사본을 만들 수
  4. CGImagepixelBuffer에서 만들고 저장할 수 있으며 나중에 이미지 처리를해야 할 때 CGBitmapContextGetData()을 사용하여 작동 할 비트 맵을 얻을 수 있습니다. 거기에 불필요한 복사본이 여기에없는 것처럼 보입니다.

나중에 처리하기 위해 비트 맵을 저장하는 것이 바람직한 방법은 무엇입니까? 비트 맵을 몇 분 이상 저장하지 않아도됩니다. 즉, 파일 시스템에 저장할 필요가 없습니다. 대답이 1 또는 2라면 버퍼를 유지할 수 있습니까? 아니면 mallocmemcpy을 사용하여 버퍼를 복사해야합니까?

답변

0

3)하지만 당신은 그 콜백에 잠깐 동안 만 유효한 것으로서 새로운 malloced 메모리에 픽셀 버퍼를 복사해야합니다. 그 기술을 사용하여 초당 30 프레임을 잡아 내고있었습니다.

관련 문제