set 的成员资格似乎不起作用 (python)
set's membership seems not to work (python)
我正在研究一种图像搜索算法,可以找到特定颜色的特定形状;为了节省时间,我只在两个不同的集合中注册了形状周长的一半,一组用于形状使用的行,一组用于形状使用的列。这个想法是,每当我找到一个具有目标颜色的点时,我就会检查这个点的行和列是否在一个主集中(它有之前的两个集);如果它们是我跳过它,如果它们不是那么我初始化 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 永远不会在主集中,所以它一直这样做对于形状的所有点,导致数字错误。
没有看到整个代码很难给出一个好的答案,但我可以给出一个猜测:
master_set.add(row)
从字面上将冻结集 row
添加到 master_set
,但您可能希望将集合中的 所有元素 添加到master_set
。看看集合的 update()
方法。
这有帮助吗?
我正在研究一种图像搜索算法,可以找到特定颜色的特定形状;为了节省时间,我只在两个不同的集合中注册了形状周长的一半,一组用于形状使用的行,一组用于形状使用的列。这个想法是,每当我找到一个具有目标颜色的点时,我就会检查这个点的行和列是否在一个主集中(它有之前的两个集);如果它们是我跳过它,如果它们不是那么我初始化 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 永远不会在主集中,所以它一直这样做对于形状的所有点,导致数字错误。
没有看到整个代码很难给出一个好的答案,但我可以给出一个猜测:
master_set.add(row)
从字面上将冻结集 row
添加到 master_set
,但您可能希望将集合中的 所有元素 添加到master_set
。看看集合的 update()
方法。
这有帮助吗?