public static Color[][] blur(int a, Color[][] array){
System.out.println("here");
for(int i=0; i<array.length; i++){
for(int j=0; j<array[0].length; j++){
int rsum = 0;
int gsum =0;
int bsum = 0;
for(int x= i+ 1; x<= i- 1; x++){
for(int y= j+1; y<= j- 1; y++){
if(x >= 0 && x< array.length && y>= 0 && y<array[0].length) {
System.out.println("hola");
int r = array[x][y].getRed();
rsum = rsum + r;
int g = array[x][y].getGreen();
gsum = gsum + g;
int b = array[x][y].getBlue();
bsum = bsum + b;
}
}
}
int ravg = rsum/a;
int gavg = gsum/a;
int bavg = bsum/a;
array[i][j] = new Color(ravg, gavg, bavg);
}
}
return array;
}
我正在尝试创建一个程序,在2d的Color像素数组中,我尝试在较大的2d数组中移动2x数组的3x3内核,并将中心像素值设置为所有rgb的平均值值。我已经调试了几个小时,但这根本不会达到第三个for循环。有人可以帮忙吗?
答案 0 :(得分:1)
这个循环永远不会做任何事情。
for(int x= i+ 1; x<= i- 1; x++){
这是因为i + 1&lt; = i - 1永远不会为真(除非你有溢出)
你最有可能的意思是
for (int x= i - 1; x <= i + 1; x++) {
或
for (int x= i + 1; x >= i - 1; x--) {