1
我知道他們已經有一些「優化循環」的問題,但我認爲這是一個有點不同。優化顏色範圍檢查嵌套for循環
我得到一個代碼,讀取圖像中的所有像素。 從每個像素我必須有RGB顏色,這也已經工作。 然後,我必須檢查綠色是否大於紅色的藍色,這也可以。 當綠色比紅色和藍色更大時,它必須做點什麼。 這一切都有效,但目前真的很慢。
我也知道爲什麼它是緩慢的,因爲它有做檢查的數以百萬計的嵌套循環, 這是我的代碼:
for (int j = 0; j < 200; j++){
for (int k = 0; k < 200; k++){
Log.i("Pixel Value", "pixel x="+j +k + Integer.toHexString(bmp.getPixel(j, k)));
for (cGreen = 50; cGreen < 254; cGreen++){
for (cRed = 0; cRed < 254; cRed++){
for (cBlue = 0; cBlue < 254; cBlue++){
if (Color.rgb(cRed, cGreen, cBlue) == bmp.getPixel(j, k)){ // magic method
if ((cGreen > cRed)&&(cGreen > cBlue)){
// this pixel is some sort of green
aantal++;
}
}
}
}
}
}
}
第j &ķ變量是圖像的大小。 和「aantal」是一個荷蘭語單詞,它的英文意思是「數量」。
他們的方法是讓代碼更快(對於程序)? 我嘗試了很多東西,但效果並不好。
我也嘗試已經做了檢查類似:
if (cGreen < cRed){
// skip the rest
}
所以,當名氣已經高於cGreen他可以跳過休息。然後它會更快,但是速度不夠快。
那麼,他們是一個「聰明」的方式來使代碼更快運行? 或其他類型的顏色檢查快很多,或者其他類型的「過濾器」。 希望你們能想到一些東西。
謝謝!
編輯: 我做了另一個跳過檢查,程序現在需要4秒檢查每個像素,而不是6,但它必須是幾個像素,在1秒內。
我已經修好了,但是我不能發表我自己的回答,我的代表不夠高,但我會保持現狀! – Bigflow 2012-02-10 13:43:01