我有两个CVImageBufferRef缓冲区,对应于由AVCaptureSession按顺序抓取的两个图像。我想比较两者是否所有像素都相同。为了循环通过帧缓冲区的所有像素,并比较它们,我有这个:比较两个无符号字符缓冲区
unsigned char *pixelA = (unsigned char *)CVPixelBufferGetBaseAddress(pixelBufferA);
unsigned char *pixelB = (unsigned char *)CVPixelBufferGetBaseAddress(pixelBufferB);
- (BOOL) isBuffer:(unsigned char *)pixelA equalToBuffer:(unsigned char *)pixelB {
for(int row = 0; row < bufferHeight; row++) {
for(int column = 0; column < bufferWidth; column++) {
if ((pixelA[0] != pixelB[0]) ||
(pixelA[1] != pixelB[1]) ||
(pixelA[2] != pixelB[2])){
return NO;
// means at some point pixelA is not equal to pixelB, so
// pixelBufferA is not equal to pixelBufferB
}
pixelA += BYTES_PER_PIXEL;
pixelB += BYTES_PER_PIXEL;
}
}
// if the method reached here, pixelBufferA is equal to pixelBufferB, so
return YES; // are equal
}
显然它在比较崩溃。如何比较pixelA中的所有值与pixelB?感谢
你有没有想过在折叠之前得到了多少? –
第一个循环............ – SpaceDog
您是否验证过您收到的地址甚至有效?使用调试器来显示它们是什么以及它们指向什么? –