当前位置: 首页 > 面试题库 >

将RGB值转换为HSV

长孙宜
2023-03-14
问题内容

我在互联网上找到了一种将RGB值转换为HSV值的方法。不幸的是,当值是R = G = B时,由于0/0操作,我得到的是NaN。

您是否知道Java中是否存在用于此转换的实现方法,或者当我获得0/0除法以获取正确的HSV值时该怎么办?

这是我的方法,它是根据Internet上的一些代码改编而成的:

public static double[] RGBtoHSV(double r, double g, double b){

    double h, s, v;

    double min, max, delta;

    min = Math.min(Math.min(r, g), b);
    max = Math.max(Math.max(r, g), b);

    // V
    v = max;

     delta = max - min;

    // S
     if( max != 0 )
        s = delta / max;
     else {
        s = 0;
        h = -1;
        return new double[]{h,s,v};
     }

    // H
     if( r == max )
        h = ( g - b ) / delta; // between yellow & magenta
     else if( g == max )
        h = 2 + ( b - r ) / delta; // between cyan & yellow
     else
        h = 4 + ( r - g ) / delta; // between magenta & cyan

     h *= 60;    // degrees

    if( h < 0 )
        h += 360;

    return new double[]{h,s,v};
}

问题答案:

我很确定您想要的是RGBtoHSB

int r = ...
int g = ... 
int b = ...
float[] hsv = new float[3];
Color.RGBtoHSB(r,g,b,hsv)
//hsv contains the desired values


 类似资料:
  • 我有一个返回十进制值的java代码,如下所示 第一个值表示红色的颜色代码,第二个值表示绿色的颜色代码,第三个值表示蓝色的颜色代码。 有没有什么方法可以将这些RGB值转换为java中相应的颜色?

  • 问题内容: 在这里解决Jeremy的响应:将十六进制颜色转换为RGB,反之亦然,我能够获得一个python程序来转换预设的颜色十六进制代码(示例#B4FBB8),但是从最终用户的角度来看,我们不能要求人们进行编辑代码并从那里运行。如何提示用户输入一个十六进制值,然后从那里吐出一个RGB值? 到目前为止,这是我的代码: 使用该行,我可以吐出正确的RGB值,即(180,251,184) 这可能非常简单

  • 所以,我创建一个图形Bash PS1生成器使用Javascript。用户可以从调色板(jsColor库)中为他们想要的任何元素选择任何颜色。我得到的值是该颜色的RGB代表。我想将该值转换为0-255之间的数字,以便在Bash中表示。 示例: 输入:#000000 输出:0 输入:#FFFFFF 输出: 255 转换为最接近的8位表示形式的任何其他输入 **我检查了这篇文章,但答案不太起作用(我得到

  • 问题内容: 好的,所以我正在研究一个程序,该程序会摄取图像,将一个像素块隔离到一个数组中,然后为该数组中的每个像素获取每个单独的rgb值。 当我这样做时 它吐出-16106634 我需要从这个int值中获取(R,G,B)值 有公式,算法,方法吗? 问题答案: 该方法始终返回颜色模型中的像素。因此,您只需要为每种颜色隔离正确的位,如下所示: 如果您碰巧需要alpha组件: 另外,您可以使用构造函数以

  • 如何将RGB彩色图像或简单的图像转换为CMY彩色图像,并提取每个组件青色(C)洋红色(M)和黄色(Y)?我的方法:-

  • 我有下面的java代码,它接受RGB颜色的三个双倍值(0和1之间)并将它们转换为十进制格式。我明白了第一个8位如何保存颜色x,第二个8位颜色y...以及如何从结果二进制中获得十进制值。我100%不明白的是为什么我们用255乘以(我知道128 64 32 16 8 4 2 1)。我们到底从用255乘以双倍值得到了什么。它是一个可以存储在8位中的值吗?为什么我们不使用256(一种颜色的可能数量)? 谢