python - 优化:如何改进 if 语句?
问题描述
我有多个带有形状的图像。我想把这个形状装箱,以便以后裁剪这些图像。我希望每个图像都具有相同的裁剪框(形状之间的坐标变化不大)。
我得到了这段代码:
from PIL import Image
import glob
import numpy as np
def Region():
path = glob.glob('label/*.tif')
L = [640,640,0,0]
for img_name in path:
x = []
y = []
img = Image.open(img_name)
pic = np.array(img)
for index, lit in enumerate(pic):
for indox, value in enumerate(lit):
if value == 0:
y.append(index)
x.append(indox)
if min(y) < L[0]:
L[0]=min(y)
if min(x) < L[1]:
L[1]=min(x)
if max(y) > L[2]:
L[2]=max(y)
if max(x) > L[3]:
L[3]=max(x)
print L
它给了我这个输出 [298, 258, 424, 386],这与我想要的非常吻合。但总的来说,我需要处理大量数据,我相信可能有更好的方法来做到这一点。
由于我在编程方面相当陌生,我想知道是否有更好的方法来完成这项任务。
有什么建议吗?
非常感谢你,
问候
编辑:如果语句 L[3] ':'
解决方案
您可以在循环期间而不是在循环之后确定最小值和最大值。
for index, lit in enumerate(pic):
for indox, value in enumerate(lit):
if value == 0:
if index < L[0]:
L[0] = index
if indox < L[1]:
L[1] = indox
if index > L[2]:
L[2] = index
if indox > L[3]:
L[3] = indox
推荐阅读
- python - 如何使用 Jupyter notebook 保存输出图像?
- php - Wordpress Archive page completely blank
- r - change value in a column of a table based on a reference
- python - How to parse_dates for the Imported CSV File in google colab ?? the CSV file is imported from the Local drive
- excel - Insert formula into cell including strings and variables
- python - time.sleep() in Blender (Cycles) script
- google-cloud-platform - 有没有办法将另一个 ClientId 添加到 Google Cloud Identity Aware Proxy?
- c# - 尝试使用 ASP.net C# 更改 AD 用户时,调用错误的目标已引发异常
- puppet - Puppet:有条件重启服务
- python - 列表索引必须是整数或切片,而不是 str Django