【问题标题】:How can I sort a list of images by image height? (Python)如何按图像高度对图像列表进行排序? (Python)
【发布时间】:2020-05-07 20:10:00
【问题描述】:

如何按图像高度对图像列表进行排序? 以列表为例:

list = ['img1.png', 'img2.png','img3.png']

The height of img1 is 150
The height of img2 is 75
The height of img3 is 329

预期结果:

list = ['img3.png','img1.png','img2.png']

提前致谢!

【问题讨论】:

  • 这些图像是二维数字数组吗?
  • @LapisRose 是的
  • 我的回答或其他人是否解决了您的问题?如果是这样,请考虑接受它作为您的答案 - 通过单击计票旁边的空心对勾/复选标记。如果没有,请说出什么不起作用,以便我或其他人可以进一步帮助您。谢谢。 meta.stackexchange.com/questions/5234/…
  • @MarkSetchell 你好!实际上,在我提出这个问题几天后,我成功地以复杂的方式解决了它。但我很确定你的答案是有效的。我现在无法测试它。但我会稍后测试。非常感谢!

标签: python-3.x image sorting height python-imaging-library


【解决方案1】:

您可以使用内置函数“sorted”对它们进行排序,并按数组长度排序,数组长度应按行数(高度)排序。为 reverse 关键字传入 True 将让您按降序排序。

list = sorted(lst, key=lambda x: len(x), reverse=True)

【讨论】:

  • 非常感谢!但是它仍然是排序图像而不是按高度排序,你知道为什么吗?
  • 您的图像是什么数据类型?您能否发布更多代码,以便我进行更好的评估?
  • 其实我相处得很好。非常感谢!
【解决方案2】:

生成图像列表并按高度排序,如下所示:

import glob
from PIL import Image

# Generate a list of PNG files
filenames = glob.glob("*.png")

# Sort that list by height of image
byHeight = sorted(filenames, key=lambda x: Image.open(x).height)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-02-14
    • 2021-10-14
    • 1970-01-01
    • 1970-01-01
    • 2013-10-14
    • 1970-01-01
    • 2012-11-01
    • 1970-01-01
    相关资源
    最近更新 更多