內通過所有RGB組合循環我通過圖像中的像素使用以下代碼當前循環和返回與RGB的像素的座標值作爲if語句定義的相同:限制
outerloop:
for (int y = 0; y < image.getHeight(); y = y + 1) {
for (int x = 0; x < image.getWidth(); x = x + 1) {
Color mycolor = new Color(image.getRGB(x, y));
int red = mycolor.getRed();
int green = mycolor.getGreen();
int blue = mycolor.getBlue();
if (red == 183 & green == 86 & blue == 182){
System.out.println(x,y);
break outerloop;
}
}
}
現在的問題是,RGB值每次在應用程序中都會有微小的變化,所以我試圖給當前常量的RGB值添加一種「容差」。例如,紅色可能是185,綠色可能是89,藍色可能是相同的(182)。
我明白我可以在if語句中使用OR(||)函數來定義所有的條件,但是因爲這需要很多代碼,所以有更簡單的解決方案嗎?例如,將正公差定義爲常量,並在該公差範圍內循環RGB值的所有組合?
'如果(Math.abs (red - 183)
2015-04-04 20:44:07
轉換爲HSV會更有意義嗎?飽和度大致相同,或者至少可以忽略我想轉換會很慢。 – clearlight 2015-04-04 20:51:00