如何从CVImageBufferRef类型的每个像素获取信息?(OSX)

时间:2011-12-05 22:44:43

标签: macos image buffer pixel isight

我正在尝试从QT电影的各个帧中提取像素数据。

我想我需要使用CV,因为QTKit和NSImage会 太慢了......

我需要比较包含网络摄像头当前帧(iSight)的缓冲区(CVImageBufferRef)中图像的每个像素。 所以我需要速度。

抱歉我的英语不好,我是意大利语。

1 个答案:

答案 0 :(得分:6)

请参阅问题how to convert a CVImageBufferRef to UIImage中的代码,这是一个更大的问题,但涵盖相同的基础。这是您需要的基本代码(来自该问题的OP):

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

请务必阅读接受的答案,以便更全面地解释数据格式。