2017-04-16 44 views
5

我正在研究從圖像的一部分獲取RGB值的程序。我想消除顏色中的黑暗並使其變得明亮。我所做的是我使用Color.RGBtoHSB然後我採用亮度通道並將其設置爲可以在範圍內的最高值,然後將HSB轉換回RGB。但是,當我這樣做時,顏色完全改變。這是一個深紅色的例子,它變成了紫色,我用它來做這件事。在Java中將暗色變爲明亮

System.out.println("Before Conversion:"); 
System.out.println("R: " + rAvg + "\nG :" + gAvg + "\nB :" + bAvg); 
Color.RGBtoHSB(rAvg, gAvg, bAvg, hsv); 

hsv[2] = 100; //Set to max value 
System.out.println("H: " + hsv[0] * 360 + "\nS: " + hsv[1] * 100 + "\nV :" + hsv[2]); 

int rgb = Color.HSBtoRGB(hsv[0], hsv[1], hsv[2]); 
System.out.println("After conversion"); 
Color color = new Color(rgb); 
System.out.println("R: " + color.getRed()); 
System.out.println("G: " + color.getGreen()); 
System.out.println("B: " + color.getBlue()); 

輸出:

Before Conversion: 
R: 128 
G :39 
B :50 
H: 352.58426 
S: 69.53125 
V :100.0 
After conversion 
R: 158 
G: 126 
B: 233 

回答

2

亮度,hsv[2],需要爲值0和1之間的嘗試這兩行代碼:

hsv[2] = 1; //Set to max value 
    System.out.println("H: " + hsv[0] * 360 + "\nS: " + hsv[1] * 100 + "\nV :" + hsv[2] * 100); 
+0

作品等魔法。我有正確的想法,只是錯誤的數字:/這有點煩人。謝謝您的幫助 :) – cuber

相關問題