gpt4 book ai didi

ios - 将 CVImageBufferRef 转换为 CGImageRef 以直接处理像素有什么意义?

转载 作者:行者123 更新时间:2023-11-28 17:46:05 24 4
gpt4 key购买 nike

我想分析来自 iOS 相机的每帧像素。我想知道是否有任何理由从 CVImageBufferRef 转到 CGImageRef,然后从 CGImageRef 获取像素,或者这些数据是否基本相同。想到的事情可能是转换过程中发生的色彩空间魔法?

最佳答案

我只是在研究这个问题,发现 CVImageBufferRef 通常可以直接读取为 24 BPP 像素,但棘手的部分是检查 CVPixelBufferGetBytesPerRow(imageBuffer) 的结果以处理每行返回字节的情况与 width * sizeof(uint32_t) 不同。在我的代码中,我需要将输入像素展平到一个不包含填充字节的缓冲区中,所以这就是我所做的:

  size_t bytesPerRow = CVPixelBufferGetBytesPerRow(imageBuffer);
...

int outputBytesPerRow = width * sizeof(uint32_t);

if (bytesPerRow == outputBytesPerRow) {
// In this optimized case, just copy the entire framebuffer in one go

memcpy(frameBuffer.pixels, baseAddress, frameBuffer.numBytes);
} else {
// Non-simple layout where padding bytes appear after the pixels, need to copy
// one row at a time into the flat pixel buffer layout.

for (int rowi = 0; rowi < height; rowi++) {
void *inputRowStartPtr = baseAddress + (rowi * bytesPerRow);
void *outputRowStartPtr = frameBuffer.pixels + (rowi * outputBytesPerRow);
memcpy(outputRowStartPtr, inputRowStartPtr, outputBytesPerRow);
}
}

关于ios - 将 CVImageBufferRef 转换为 CGImageRef 以直接处理像素有什么意义?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5893039/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com