首页 > 解决方案 > 这个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]

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]

提前谢谢,我希望你能帮助我

标签: pythonfor-loopshearsort

解决方案


您的输出具有与输入不同的维度。您不能将原始范围用于输出索引。我认为最简单的选择是反转赋值语句:

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)]

推荐阅读