我坚持我的洪水填充算法中:它停在那一瞬间,“正常”不应该......停止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:'不**检查边界。它检查矩阵的值。 –