인터넷에서 RGB 값을 HSV 값으로 변환하는 방법을 찾았습니다. 불행히도 값이 R = G = B 일 때 0/0 연산 때문에 NaN이 발생합니다.RGB 값을 HSV로 변환
Java에서이 변환에 대해 구현 된 방법이 있는지 알고 계십니까, 아니면 HSV의 올바른 값을 얻기 위해 0/0 division을 얻었을 때 무엇을해야합니까? 여기
인터넷에서 일부 코드에서 적응 내 방법, 제공 : 나는 당신이 원하는 것을 확신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};
}
, 나는 r = g = b, hsv = [0,0, r/255.0] 일 때를 믿는다. 색조는 임의이며, 채도는 0입니다 (회색 음영입니다). 그러나 밝기는 r = g = b 값입니다. – thomas88wp