членство в наборе, кажется, не работает (python) - PullRequest
0 голосов
/ 04 декабря 2018

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

1 Ответ

0 голосов
/ 04 декабря 2018

Трудно дать хороший ответ, не видя весь код, но я могу дать предположение:

master_set.add(row) буквально добавляет frozenset row к master_set, но вы, вероятно, хотите все элементы из набора, добавляемого к master_set.Взгляните на update() метод множеств.

Помогает ли это?

...