Как я могу получить информацию от каждого пикселя из типа CVImageBufferRef? (OSX) - PullRequest
3 голосов
/ 06 декабря 2011

Я пытаюсь извлечь пиксельные данные из отдельных кадров фильма QT.

Я думаю, что мне нужно использовать CV, потому что QTKit и NSImage будут слишком медленными ...

Мне нужно сравнить каждый пиксель изображения в буфере (CVImageBufferRef), содержащем текущий кадр веб-камеры (iSight).Так что мне нужна скорость.

Извините за мой плохой английский, я итальянский.

1 Ответ

6 голосов
/ 06 декабря 2011

См. Код в вопросе , как конвертировать CVImageBufferRef в UIImage , что является более серьезным вопросом, но охватывает ту же тему.Вот базовый код, который вам понадобится (из ОП этого вопроса):

CVImageBufferRef imageBuffer = CMSampleBufferGetImageBuffer(sampleBuffer); 
/*Lock the image buffer*/
CVPixelBufferLockBaseAddress(imageBuffer,0); 
/*Get information about the image*/
uint8_t *baseAddress = (uint8_t *)CVPixelBufferGetBaseAddress(imageBuffer); 
size_t bytesPerRow = CVPixelBufferGetBytesPerRow(imageBuffer); 
size_t width = CVPixelBufferGetWidth(imageBuffer); 
size_t height = CVPixelBufferGetHeight(imageBuffer); 

/*We unlock the  image buffer*/
CVPixelBufferUnlockBaseAddress(imageBuffer,0);

Обязательно прочитайте принятый ответ для более полного объяснения формата данных.

...