YUV420图像颜色检测,例如HSV颜色范围

时间:2018-12-11 13:48:53

标签: android image-processing yuv hsv color-detection

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

我已经将UV阵列与原始图像数据分开,如下所示:

HSV

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); 保留U和V分量的字节值。如何将其用于颜色检测?

1 个答案:

答案 0 :(得分:0)

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

  • 对U和V进行升采样以匹配Y,或者
  • 对Y进行下采样以匹配U和V。

您要选择哪种取决于您确定色相的最后阶段所需的分辨率。

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

第三步是将第二步中的RGB转换为HSL(色相,饱和度和亮度)。

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

This answer链接到您所需的公式。