【问题标题】:Loading two images at a time in a loop using Python-glob使用 Python-glob 在循环中一次加载两个图像
【发布时间】:2016-02-11 11:39:05
【问题描述】:

我正在尝试使用 Python-glob 从文件夹中读取所有图像。 以下是部分代码:

    for file in glob.glob("\*.jpg"):
        image=cv2.imread(file);

它工作得很好,但我需要在 glob 循环的一次迭代中一次读取两个图像,即两个连续的图像。简单来说,我需要image[i]image[i+1]

【问题讨论】:

    标签: python glob


    【解决方案1】:

    这是你要找的吗?

    files = glob.glob("\*.jpg")
    img_a = cv2.imread(files[0])
    
    for file in files[1:]:
    
        img_b = cv2.imread(file);
    
        # do what you need to do with img_a and img_b
    
        # and then prepare img_a for the next loop
        img_a = img_b
    

    【讨论】:

    • 非常感谢。如此简单而智能的方法。
    • 最后一行是否需要做copy.copy?我的意思是简单的 img_a=img_b;也可以吗?
    • 如果你只赋值img_a=img_bimg_a 将指向与img_b 相同的数组,所以当你在下一个循环中读取一个新的img_b 时,img_a 将也要更新。也许您可以尝试一下,看看它的行为如何,但我确实认为您需要显式复制该对象。
    • @Lisa 你不需要复制。是的img_a 将与img_b 是同一个对象,但imread() 创建一个新对象,该对象将绑定到名称img_b。分配给名称将不会影响之前绑定到该名称的任何对象。 (除非它不再被引用,对垃圾收集来说可能是公平的游戏。)
    • @BlackJack 哦,好的,很高兴知道 - 谢谢!我相应地更新了答案。
    猜你喜欢
    • 2013-11-13
    • 2015-01-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-27
    • 1970-01-01
    相关资源
    最近更新 更多