集的成员资格似乎不起作用(python)

时间:2018-12-04 10:17:05

标签: set membership

我正在研究一种图像搜索算法,该算法可以找到某些颜色的某些形状;为了节省时间,我仅将形状周长的一半记录为两组不同的形状,一组用于该行,另一组用于该列使用的列。这样的想法是,每当找到具有目标颜色的点时,便会检查该点的行和列是否在主集中(具有先前的两个集中);如果是,则跳过它;否则,我将初始化2个递归函数,以记录形状的第一行和第一列。

因为它是用于学校项目的,所以我的图像是专门定制的

,代码为

for y in range(height):
    for x in range(width):
        if img[y][x] == target:
            if y in master_set and x in master_set:
                continue
            else:
                row = set()
                column = set()
                flood_fillv2_y(img,x,y,target,column)
                flood_fillv2_x(img,x,y,target,row)
                row=frozenset(row)
                column=frozenset(column)
                master_set.add(row)
                master_set.add(column)

然后的想法是检查master_set的len来查看我有多少个形状,但是正如我说的,我知道y和x从来不在主集中,因此它会为所有对象继续这样做点的形状,导致数字错误。

1 个答案:

答案 0 :(得分:0)

不看完整的代码很难给出一个好的答案,但是我可以给出一个猜测:

master_set.add(row)实际上将冻结集row添加到master_set,但是您可能希望将集合中的所有元素添加到master_set 。看一下update()的集合方法。

有帮助吗?