我正在编写一个程序,它读入图像并计算有多少个连接的像素。图像包含4个白色背景上的黑色像素形状。使用递归连接像素
最后,我应该有count = 4;
我无法编写通过每个像素,并检查读取如果是黑色或白色的递归方法。如果是黑色,我需要检查周围是否还有其他黑色像素,如果没有,请将计数增加1。
任何想法?
试图递归方法:
public int recursive(int[][] g, int i,int j){
//pseudo code
if(it is white)
return 0;
int north = recursive(g,i,j+1);
int south = recursive(g,i,j-1);
int west = recursive(g,i-1,j);
int east = recursive(g,i+1,j);
int nw = recursive(g,i-1,j+1);
int ne = recursive(g,i+1,j+1);
int sw = recursive(g,i-1,j-1);
int se = recursive(g,i+1,j-1);
return north+south+west+east+nw+ne+sw+se+1;
}
即得到数的另一种方法:
int[][] grid = new int[width][height];
for(int i = 0; i < width; i++){
for(int j = 0; j < height; j++){
recursive(grid,i,j);
}
}
我不知道那是递归这里最好的办法。嵌套for循环中的迭代对我更有意义。 – christopher 2014-10-11 21:14:29
@christopher:你为什么这么说?我认为你错了。 – 2015-07-09 11:41:47