Что является обратным для цикла 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)]