gpt4 book ai didi

c# - CVPixelBufferGetBaseAddressOfPlane

转载 作者:行者123 更新时间:2023-11-29 04:45:43 26 4
gpt4 key购买 nike

如何用 java、c# 或 c++ 等其他语言复制 CVPixelBufferGetBaseAddressOfPlane 的功能?

最佳答案

YUV420SP 格式由两个平面组成。第一个平面包含亮度信息(Y 值),第二个平面包含色度值(U 和 V 值)。此外,每个像素都有一个 Y 值,但每个 2 x 2 像素 block 只有一个 U 和 V 值。最后,U 和 V 值在第二个平面中交错。

所以你的字节数组很可能是这样组织的(每个字节包含一个 Y、U 或 V 值):

YYYYY ... YYYYUVUV ... UVUV

假设图像为 400 x 300 像素。那么您就有 120,000 个 Y 值,后面跟着 30,000 个 U/V 对。

由于您使用的是 Java,而 Java 没有可以指向数组中间的指针,因此您需要使用数组索引而不是地址。因此,CVPixelBufferGetBaseAddressOfPlane 的或多或少等效实现可能如下所示:

int GetBaseIndexOfPlane(int plane, int imageWidth, int imageHeight)
{
if (plane == 0)
return 0;
else
return imageWidth * imageHeight;
}

您的图像数据很可能不包含有关图像大小的任何信息。因此,您必须从其他地方获取该信息并将其提供给该方法。另一方面,您不需要向该方法提供字节数组。不需要计算任何平面的偏移。

关于c# - CVPixelBufferGetBaseAddressOfPlane,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9666833/

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