我正在每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分量的字节值。如何将其用于颜色检测?
答案 0 :(得分:0)
图像的U和V分量相对于Y分量进行了下采样。所以第一步是:
您要选择哪种取决于您确定色相的最后阶段所需的分辨率。
第二步是将第一步中的YUV转换为RGB。
第三步是将第二步中的RGB转换为HSL(色相,饱和度和亮度)。
最后一步是选择与您想要的颜色相对应的H(色调)。
This answer链接到您所需的公式。