/ / jak mogę uzyskać informacje z każdego piksela z typu CVImageBufferRef?(OSX) - macos, image, buffer, pixel, isight

jak mogę uzyskać informacje z każdego piksela z typu CVImageBufferRef? (OSX) - makra, obraz, bufor, piksel, wgląd

Próbuję wyodrębnić dane pikseli z poszczególnych klatek filmu QT.

Myślę, że muszę użyć CV, ponieważ QTKit i NSImage by bądź zbyt wolny...

Muszę porównać każdy piksel obrazu w buforze (CVImageBufferRef) zawierającym aktualną klatkę kamery internetowej (iSight). Więc potrzebuję szybkości.

Przepraszam za mój zły język angielski, jestem Włochem.

Odpowiedzi:

5 dla odpowiedzi № 1

Zobacz kod w pytaniu jak przekonwertować CVImageBufferRef na UIImage, co jest większym pytaniem, ale dotyczy tego samego zagadnienia. Oto kod podstawowy, którego potrzebujesz (z OP tego pytania):

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);

Koniecznie przeczytaj zaakceptowaną odpowiedź, aby uzyskać pełniejsze wyjaśnienie formatu danych.