Окружный квадрат метод итерации в массиве NumPy - PullRequest
0 голосов
/ 10 апреля 2019

Я обрабатываю видео в OpenCV, которое, конечно, обрабатывает кадры как двумерные массивы. Я хотел бы итеративно искать в области вокруг определенного пикселя. Вместо того, чтобы выполнять итерацию по столбцу, а затем по строке, я хотел бы пройтись по значениям в виде квадратной змеи. Я постараюсь проиллюстрировать ниже.

X - это пиксель, с которого мы начинаем осматриваться.

000   100   110   111   111   111
0x0 > 0x0 > 0x0 > 0x0 > 0x1 > 0x1
000   000   000   000   000   001

Как вы можете видеть, он продолжит извиваться вокруг начальной точки, пока не достигнет столбца, с которого он начал. В этот момент он должен вытянуть еще одну колонку влево и начать движение вверх в массиве. Это не будет бесконечной итерацией, а скорее остановится, когда определенное количество угловых значений будет соответствовать заданному значению.

До сих пор я был в состоянии перебирать массив, однако я не уверен, как заставить его останавливаться в определенной точке, которая является динамической в ​​течение жизни итерации.

def search_local_area(area, start_pt):
    """Search the area around the pixel identified as a 'good point' in a roundabout-square."""
    test = np.zeros_like(area)
    for row, _ in enumerate(area[..., start_pt]):
        for column, value in enumerate(area[start_pt, ...]):
            test[row, column] = value

Приведенный выше код просто копирует значения в тестовый массив, чтобы показать, что он повторяется в правильном направлении.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...