它可能是一個愚蠢的錯誤,我做了,但由於某種原因,我的計數器沒有增加,輸出到控制檯爲0代表底部的所有打印語句。 我確信顏色被正確讀取,這意味着增量代碼必須存在問題。在Java中增加錯誤
public void countColours(BufferedImage colouredImage) {
int redCount = 0;
int greenCount = 0;
int blueCount = 0;
int totalPixels = (colouredImage.getWidth()*colouredImage.getHeight());
for (int x = 0; x < colouredImage.getWidth(); x++) {
for (int y = 0; y < colouredImage.getHeight(); y++) {
int red = ((colouredImage.getRGB(x, y)>>> 16) & 0xFF);
int green = ((colouredImage.getRGB(x, y)>>> 8) & 0xFF);
int blue = ((colouredImage.getRGB(x, y)) & 0xFF);
float[] hsb = Color.RGBtoHSB(red, green, blue, null);
float hue = hsb[0];
int colour = (int) (hue*360);
if (colour <= 60 & colour >= 300) {
redCount++;
}
if (colour >= 60 & colour <= 180) {
greenCount++;
}
if (colour >= 180 & colour <= 300) {
blueCount++;
}
}
}
int totalRed = (redCount/totalPixels)*100;
int totalGreen = (greenCount/totalPixels)*100;
int totalBlue = (blueCount/totalPixels)*100;
System.out.println(totalRed);
System.out.println(totalGreen);
System.out.println(totalBlue);
}
伊夫調試儘可能正如我上面所說,顏色是0和360,但如果語句和增量顯然不工作,但我不明白爲什麼之間的值?
在此先感謝
'(redCount/totalPixels)* 100' ==>'(redCount * 100)/ totalPixels'等。 – devnull