Что является обратным для цикла for?

У меня есть код, который обрезает изображение в 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]

высота - высота изображения, изображение - это изображение. 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 ответ

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

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)]
Другие вопросы по тегам