代码之家  ›  专栏  ›  技术社区  ›  sneharc

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

  •  0
  • sneharc  · 技术社区  · 6 年前

    我收到了 YUV420 图像数据输入 byte[] onDrawFrame() . 我需要从给定的字节数组中找出图像中的颜色。如果每个像素的值都是特定的,我可以用它来确定它们的颜色 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);
    

    uvBuffer 保存U和V分量的字节值。如何使用这个进行颜色检测?

    1 回复  |  直到 6 年前
        1
  •  0
  •   Mark Setchell    6 年前

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

    • 向上采样U和V以匹配Y,或
    • 向下采样Y以匹配U和V。

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

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

    最后一步是选择与所需颜色相对应的H(色调)。

    This answer 链接到你需要的公式。