读取图像并有效地调整它们的大小

Reading in Images and resizing them efficiently

我尝试读入一堆图像(超过 180k)并将它们调整为新的高度和新的宽度。我使用下面的代码,它适用于少量图像,但对于大量图像,内核会死掉……那么,是否有更有效的方法来调整图像大小?也许没有阅读图像?

 folders = glob.glob(r'path\to\images\*')
 imagenames_list = []
    for folder in folders:
        for f in glob.glob(folder+'/*.png'):
            imagenames_list.append(f)
    read_images = []        

    for image in imagenames_list:
        read_images.append(cv2.imread(image))

    def resize_images(img, new_width, new_height):
        size = (new_width, new_height)
        resized_img = cv2.resize(img, size)
        return resized_img

    resized_img = [resize_images(img, new_width=128, new_height=32) for img in read_images]

问题似乎是您将大约 180,000 张图像加载到 read_images 列表中。这是很多图像,很可能会填满 RAM 并杀死内核。

由于您没有提及您打算如何处理这些调整大小后的图像,我可以建议您尝试做两件事。

  • 创建一个 resize_and_save(image_path, new_size, save_path) 以立即加载、保存和发布图像。您可以将此用于 imagenames_list

  • 中的每个图像
  • 如果您使用它来创建用于训练的批次,请只加载准备一批所需的图像,并只调整这些图像的大小