Я работаю над алгоритмом поиска изображения, который находит определенные формы определенных цветов;чтобы сэкономить время, я регистрирую только половину периметра фигуры в 2 разных наборах, один для строк и один для столбцов, используемых формой.Идея состоит в том, что всякий раз, когда я нахожу точку, которая имеет целевой цвет, я тогда проверяю, находятся ли строка и столбец этой точки в основном наборе (который имеет оба предыдущих набора);если это так, я пропускаю его, если нет, то я инициализирую 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)
Идея состоит в том, чтобы проверить len master_set
, чтобы увидеть, сколько у меня фигур, но, как я уже сказал, я получаю, что y и xникогда не находятся в главном наборе, поэтому он продолжает делать это для всех точек фигуры, что приводит к неверному числу.