我堅持我的洪水填充算法中:它停在那一瞬間,「正常」不應該......停止Floodfill算法
這裏的情況:我有一個矩陣512×512個像素和值是50或100伊斯。 50的值正在形成一個正方形,我想在一個正方形中改變值爲255(使用填充算法)。
def FF(matrix,x,y,h): #h is chosen <=50
stack=[]
matrix[x,y]=255
stack.append((x,y))
while stack!=[]:
(x,y)=stack[0]
stack.pop()
if matrix[x-1,y] <= h: #Pixel North
matrix[x-1,y]=255
stack.append((x-1,y))
if matrix[x,y+1] <= h: #Pixel East
matrix[x,y+1]=255
stack.append((x,y+1))
if matrix[x+1,y] <= h: #Pixel South
matrix[x+1,y]=255
stack.append((x+1,y))
if matrix[x,y-1] <= h: #Pixel West
matrix[x,y-1]=255
stack.append((x,y-1))
if matrix[x-1,y+1] <= h: #Pixel North East
matrix[x-1,y+1]=255
stack.append((x-1,y+1))
if matrix[x+1,y+1] <= h: #Pixel South East
matrix[x+1,y+1]=255
stack.append((x+1,y+1))
if matrix[x+1,y-1] <= h: #Pixel South West
matrix[x+1,y-1]=255
stack.append((x+1,y-1))
if matrix[x-1,y-1] <= h: #Pixel North West
matrix[x-1,y-1]=255
stack.append((x-1,y-1))
else:
print ('... finished')
return
我不知道爲什麼,但代碼工作了10次,但沒有更多。
謝謝你,問:
你的矩陣[x-1,y] <= h:'不**檢查邊界。它檢查矩陣的值。 –