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