AV Foundation może przekazać surowe bajty dla obrazu przechwyconego przez wideo lub aparat fotograficzny. Konieczne jest skonfigurowanie AVCaptureSession za pomocą odpowiedniego urządzenia AVCaptureDevice i odpowiedniego AVCaptureDeviceInput i AVCaptureDeviceOutput (AVCaptureVideoDataOutput lub AVCaptureStillImageOutput). Apple ma kilka przykładów tego procesu w swojej dokumentacji i wymaga konfiguracji jakiegoś standardowego kodu.
Po skonfigurowaniu sesji przechwytywania i przechwytywaniu danych z aparatu konfiguruje się metodę delegata -captureOutput:didOutputSampleBuffer:fromConnection:
, w której jednym z parametrów będzie CMSampleBufferRef. To będzie mieć CVImageBufferRef w tym, że masz dostęp przez CMSampleBufferGetImageBuffer()
. Zastosowanie tego bufora pikseli zwróci bazowy adres tablicy bajtów dla surowych danych pikseli reprezentujących ramkę kamery. Może to być kilka różnych formatów, ale najczęściej są to BGRA i planarne YUV.
Mam przykładową aplikację, która korzysta z tego here, ale polecam również przyjrzeć się my open source framework, która otacza standardową płytę podstawową AV Foundation i ułatwia przetwarzanie obrazu na GPU. W zależności od tego, co chcesz zrobić z tymi nieprzetworzonymi bajtami kamery, mogę już mieć coś, co możesz tam użyć, lub sposób na wykonanie go znacznie szybciej niż przy przetwarzaniu w CPU.
końcu się do tego ... kod zostanie zaksięgowana tutaj naprawdę pomogło choć: http://stackoverflow.com/a/11615472/472768 Dzięki! – FeifanZ
Czy mógłbyś wyjaśnić, co powinienem podać w tym przypadku na wejściu tej funkcji? 'Wykrywa AlprResults (unsigned char * pixelData, int bytesPerPixel, int imgWidth, int imgHeight, std :: vector regionsOfInterest);" Rozumiem tylko punkt o "pixelData" i "regionsOfInterest". –
@SashaKid - Nie mam pojęcia, co ta funkcja ma, a to brzmi jak całkowicie odrębne pytanie. –