Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/365.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python i使用回溯创建图像_Python_Image_Numpy_Iteration - Fatal编程技术网

Python i使用回溯创建图像

Python i使用回溯创建图像,python,image,numpy,iteration,Python,Image,Numpy,Iteration,所以我问了一下,在其中一条评论中有人提出了建议 我不明白为什么你不能从角落开始,遍历形状外部的每个像素(并使用回溯来避免线条),这将为你提供外部阵列,然后只填充其他非黑色的像素 但我不明白你们将如何实际实施上述解决方案,因为根据我的理解,如果我有一个 list = [1,2,3,4,5,6,7,8,9,10] 我可以重复它 for item in list: do something 我甚至可以使用条件使其停止、开始或任何其他操作,但我不知道如何使其在不拾取内部白色像素的情况下迭代外

所以我问了一下,在其中一条评论中有人提出了建议

我不明白为什么你不能从角落开始,遍历形状外部的每个像素(并使用回溯来避免线条),这将为你提供外部阵列,然后只填充其他非黑色的像素

但我不明白你们将如何实际实施上述解决方案,因为根据我的理解,如果我有一个

list = [1,2,3,4,5,6,7,8,9,10]
我可以重复它

for item in list:
    do something

我甚至可以使用条件使其停止、开始或任何其他操作,但我不知道如何使其在不拾取内部白色像素的情况下迭代外部白色像素

如果我理解正确,您希望从图像的一角开始,并将任何形状之外的每个像素设置为
黑色
,让我们给它一个值
1
。因此,在此过程之后,您将有一个数组,每个形状的内部像素设置为
白色
0
,每个外部或边界像素设置为
1

你没有指定任何细节,所以我只能给你一些伪代码。要使用递归在二维数组上迭代:

def fill(A, x, y):
    A[x][y] = 1
    if x-1 >= 0 and A[x-1][y] == 0:
        fill(A, x-1, y)
    if x+1 < N and A[x+1][y] == 0:
        fill(A, x+1, y)
    if y-1 >= 0 and A[x][y-1] == 0:
        fill(A, x-1, y-1)
    if y+1 < N and A[x][y+1] == 0:
        fill(A, x, y+1)

fill(A, 0, 0)
def加注(A、x、y):
A[x][y]=1
如果x-1>=0且A[x-1][y]==0:
填充(A、x-1、y)
如果x+1=0且A[x][y-1]==0:
填充(A、x-1、y-1)
如果y+1

这是一个非常简单的解决方案,除非
0,0
位于形状内部或属于形状边界,否则它将起作用。在您的实现中,您可以使用2d
numpy.array
作为
A

括号就是一个例子,您在寻找什么细节?@Chuckfullinta我是说示例输入,所需的输出格式等,所以我们可以为您提供更具体的答案与完整的实施,但我希望您将能够产生自己的现在。