我坚持我的洪水填充算法:它停止在一个时刻,它“正常”不应该。。。你知道吗
情况是这样的:我有一个512*512像素的矩阵,值不是50就是100。50的值形成了一个正方形,我想用255的值来改变这个正方形(使用floodfill算法)。你知道吗
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倍,但不是更多。你知道吗
谢谢你,Q
问题在于:
由于您获得了第一个元素,但删除了最后一个元素,因此有可能(就像而且可能总是这样)对推送到堆栈上的所有元素进行求值而不是。你知道吗
但是你把它变得太复杂了。只需写下:
相关问题 更多 >
编程相关推荐