【问题标题】:Itereating over an image with backtracking使用回溯迭代图像
【发布时间】:2016-04-13 23:01:46
【问题描述】:

所以我问了this question 并在其中一个 cmets 中有人建议

我不明白为什么你不能从角落开始并遍历形状外部的每个像素(并使用回溯来避免线条),这会给你外部数组,然后只需填充在其他不是黑色的像素中。

但我不明白您将如何实际实施上述解决方案,因为据我了解,如果我有一个可迭代的

list = [1,2,3,4,5,6,7,8,9,10]

我可以遍历它

for item in list:
    do something

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

【问题讨论】:

    标签: python image numpy iteration


    【解决方案1】:

    如果我理解正确你想从图像的角落开始并将任何形状之外的每个像素设置为black,让我们给它一个值1。因此,在此过程之后,您将拥有一个数组,其中每个形状的内部像素设置为 white0,每个外部或边框像素设置为 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)
    

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

    【讨论】:

    • 这里的括号太乱了
    • 您在寻找什么详细信息?
    • @ChuckFulminata 我的意思是示例输入、所需的输出格式等,因此我们可以通过完整的实现为您提供更具体的答案,但我希望您现在能够自己制作。
    猜你喜欢
    • 1970-01-01
    • 2019-09-16
    • 1970-01-01
    • 2013-03-10
    • 1970-01-01
    • 2011-07-03
    • 1970-01-01
    • 2018-08-18
    • 2018-09-29
    相关资源
    最近更新 更多