2012-05-02 6 views
3

Я использую AVCaptureVideoDataOutputSampleBufferDelegate для отображения видео с камеры iPhones в пользовательском UIView со следующим методом делегата.Могу ли я получить полезную информацию с камеры?

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

Я хотел бы иметь возможность вытаскивать полезную информацию из изображения, такую ​​как экспозиция, цвет, порог.

Каков наилучший способ доступа к этой информации?

ответ

2

Извлечение вложения метаданных из буфера выборки. Вы можете найти Экспозицию, цвет и т. Д. В метаданных. что-то вроде этого:

NSDictionary *exifDictionary = (NSDictionary*)CMGetAttachment(sampleBuffer, kCGImagePropertyExifDictionary, NULL); 
1

Вы можете получить доступ лежащих в основе данных элементов изображени с помощью этого кода:

CVPixelBufferRef pixelBuffer = CMSampleBufferGetImageBuffer(sampleBuffer); 
CVReturn lock = CVPixelBufferLockBaseAddress(pixelBuffer, 0); 
if (lock == kCVReturnSuccess) { 
    int w = 0; 
    int h = 0; 
    int r = 0; 
    int bytesPerPixel = 0; 
    unsigned char *buffer;  

    if (CVPixelBufferIsPlanar(pixelBuffer)) { 
    w = CVPixelBufferGetWidthOfPlane(pixelBuffer, 0); 
    h = CVPixelBufferGetHeightOfPlane(pixelBuffer, 0); 
    r = CVPixelBufferGetBytesPerRowOfPlane(pixelBuffer, 0); 
    bytesPerPixel = r/w; 

    buffer = CVPixelBufferGetBaseAddressOfPlane(pixelBuffer, 0); 
    }else { 
    w = CVPixelBufferGetWidth(pixelBuffer); 
    h = CVPixelBufferGetHeight(pixelBuffer); 
    r = CVPixelBufferGetBytesPerRow(pixelBuffer); 
    bytesPerPixel = r/w; 

    buffer = CVPixelBufferGetBaseAddress(pixelBuffer); 
    } 
} 

 Смежные вопросы

  • Нет связанных вопросов^_^