我正在編寫一個程序,它讀入圖像並計算有多少個連接的像素。圖像包含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