gpt4 book ai didi

objective-c - 如何在 ios 中将 y-planar、u-planar 和 uv-planar 与 yuv bi planar 分开?

转载 作者:搜寻专家 更新时间:2023-10-30 20:03:12 26 4
gpt4 key购买 nike

在应用程序中我使用了 AVCaptureVideo。我得到了 kCVPixelFormatType_420YpCbCr8BiPlanarFullRange 格式的视频。

现在我从 imagebuffer 获取 y 平面和 uv 平面。

  CVPlanarPixelBufferInfo_YCbCrBiPlanar *planar = CVPixelBufferGetBaseAddress(imageBuffer);

size_t y-offset = NSSwapBigLongToHost(planar->componentInfoY.offset);
size_t uv-offset = NSSwapBigLongToHost(planar->componentInfoCbCr.offset);

这里yuv是双平面格式(y+UV)。

什么是平面紫外线?这是 uuuu,yyyy 格式还是 uvuvuvuv 格式?如何分别获得 u 平面和 y 平面?

谁能帮帮我?

最佳答案

Y平面代表亮度分量,UV平面代表Cb和Cr色度分量。

在 kCVPixelFormatType_420YpCbCr8BiPlanarFullRange 格式的情况下,您会发现亮度平面为 8bpp,尺寸与您的视频相同,您的色度平面为 16bpp,但只有原始视频大小的四分之一。在这个平面上,每个像素将有一个 Cb 和一个 Cr 分量。

因此,如果您的输入视频为 352x288,则您的 Y 平面将为 352x288 8bpp,而您的 CbCr 为 176x144 16bpp。这与 12bpp 352x288 图像的数据量大致相同,是 RGB888 所需数据量的一半,但仍少于 RGB565。

所以在缓冲区中,Y 看起来像这样[YYYYY。 . . ]和紫外线[UVUVUVUVUV。 . .]

当然,与 RGB 相比,[RGBRGBRGB。 . . ]

关于objective-c - 如何在 ios 中将 y-planar、u-planar 和 uv-planar 与 yuv bi planar 分开?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13429456/

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