python - 这个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]
提前谢谢,我希望你能帮助我
解决方案
您的输出具有与输入不同的维度。您不能将原始范围用于输出索引。我认为最简单的选择是反转赋值语句:
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)]
推荐阅读
- javascript - Google Analytics 是否跟踪使用 javascript 更改的图像?
- wpf - WPF ObservableCollection 和 InotifyPropertyChanged
- javascript - React-native 0.61.5 release build android 在特定路线上导航后崩溃
- rstudio - 更改 Rstudio“查找”行为
- javascript - Javascript:在视口中启动 Lottie 动画
- mysql - 尽管语法正确,Nodejs Async await 没有正确等待
- javascript - javascript中正确的数组排序
- java - 无法通过使用带有 Aspose 工作簿的 java 在 ADO(s3 存储桶)中提供密码来取消保护 xlsx、xls 文件
- php - MySQL更新查询join和join left
- jenkins - Jenkins 构建:无法为锁定文件/home/ubuntu/.gradle/.../gradle-6.7.1-all.zip.lck 创建父目录