繁体   English   中英

比较两个无符号字符缓冲区

[英]Comparing two unsigned char buffers

我有两个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? 谢谢

我从来没有真正做过您正在做的事情,但是,有一个原因,您不能只与memcmp一次性比较缓冲区吗?

- (BOOL) isBuffer:(unsigned char*)pixelA equalToBuffer:(unsigned char*)pixelB
{
    size_t bufferSize = bufferWidth * bufferHeight * BYTES_PER_PIXEL;

    return memcmp( pixelA, pixelB, bufferSize ) == 0;
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM