YUV420图像颜色检测类似HSV颜色范围



我在每个onDrawFrame()byte[]中接收YUV420图像数据。我需要从给定的字节数组中找出图像中的颜色。我如何提取每个像素的U和V值,并使用它们来确定该图像中是否存在特定颜色(类似于HSV颜色范围(。

我已经将UV阵列从原始图像数据中分离出来,如下所示:

byte[] data = image.getData();
int inputYLength = image.getWidth() * image.getHeight();
int inputUVLength = image.getWidth() * image.getHeight() / 2;
ByteBuffer uvBuffer = ByteBuffer.allocateDirect(inputUVLength);
uvBuffer.put(image.getData(), inputYLength, inputUVLength);
uvBuffer.position(0);

CCD_ 5保持U和V分量的字节值。如何将其用于颜色检测?

图像的U和V分量相对于Y分量进行下采样。所以第一步是:

  • 对U和V进行上采样以匹配Y,或
  • 向下采样Y以匹配U和V

选择哪一个取决于确定色调的最后阶段所需的分辨率。

第二步是将第一步的YUV转换为RGB。

第三步是将第二步的RGB转换为HSL(色调、饱和度和亮度(。

最后一步是选择与您想要的颜色相对应的H(色调(。

这个答案链接到你需要的公式。