【问题标题】:Resize list of images with scipy imresize使用 scipy imresize 调整图像列表的大小
【发布时间】:2017-05-29 12:14:35
【问题描述】:

我有一张图片列表,我想将其调整为特定大小。

我想为此使用 scipy 的 imresize 函数并得到以下代码,但无法按预期工作:

imgs = get_imgs()
for img in imgs:
    img = imresize(img, (82, 100))

如果我打印出 imgs 数组的形状,它仍然是原始大小 (178, 218)。有人可以解释为什么这不起作用吗?

很遗憾,我没有发现任何其他关于使用此功能调整图像列表大小的问题。

【问题讨论】:

    标签: python numpy scipy


    【解决方案1】:

    img 变量仅在for 循环中有效。 所以imresize 函数的结果在循环之后会丢失。

    你必须用结果建立一个新列表。

    imgs = get_imgs()
    res = []
    for img in imgs:
        res.append(imresize(img, (82, 100)))
    

    pytonic 方法是使用 map :

    res = map(lambda img : imresize(img, (82, 100), get_imgs())
    

    【讨论】:

    • 你的意思是 res = [] 对吧?否则我会收到附加命令的错误。但是感谢您的解释!我认为将列表中的图像替换为调整大小的图像是一种常见的情况。或者至少有一个参数说 inplace=True/False 就像在熊猫中一样。
    • @TheDude 是的,[]。在循环中,img 只是一个指向当前元素的指针。它不是列表中的指针。 imgs[i] 将是列表中的一个指针,但这不是 for 语句的工作方式。
    猜你喜欢
    • 2021-09-19
    • 2014-11-26
    • 2014-10-29
    • 2018-11-10
    • 1970-01-01
    • 2012-03-24
    • 1970-01-01
    • 2020-05-10
    • 2015-05-02
    相关资源
    最近更新 更多