Что обратного для цикла for? - PullRequest
0 голосов
/ 16 ноября 2018

У меня есть код, который подрезает изображение в python, и я делаю это с помощью прямого отображения.Тем не менее, мое назначение также требует от меня сделать обратное отображение, то есть найти входные данные из вывода.Мой код выглядит следующим образом, и мой вопрос: как выглядит обратный цикл for в форме кода?

for y in range(height):
   for x in range(50, 450):
        img[int(x * By + y), int(x + y * Bx)] = img[y, x]

height - это высота изображения, img - это изображение.Bx и By - это просто факторы, числа, которые я выбираю сам.Для пояснения формула сдвига в математике выглядит следующим образом:

x '= x + y · Bx

y' = x · By + y

Мое предположениеэто, но я получаю ошибку индекса за пределами границ:

for y in range(height):
    for x in range(50, 450):
        img[int(x * 1/By - y), int(x - y * 1/Bx)] = img[y, x]

Заранее спасибо, надеюсь, вы поможете мне

1 Ответ

0 голосов
/ 16 ноября 2018

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

for y in range(height):
   for x in range(50, 450):
        img_1[y, x] = img_2[int(x * By + y), int(x + y * Bx)]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...