【问题标题】:How to choose some specific images from a large dataset of images? [closed]如何从大型图像数据集中选择一些特定的图像? [关闭]
【发布时间】:2026-01-09 14:45:02
【问题描述】:

我的数据集有 366 个文件夹,这意味着每天的文件夹涵盖 1 年的持续时间,每个文件夹包含 51-55 个图像,其中我只需要 36 个图像来构建神经网络。那么我可以为这些图像分配一些索引并根据它们的索引选择一些..?有人可以建议我这样做的代码吗..?

【问题讨论】:

  • 您可以添加pandas.DataFrame.head 的数据吗?因此,我们可以引导您走向正确的方向。您没有向我们提供有关您的数据的任何信息。有数千种方法从数据框中提取和分离数据。也许我们可以使用列来分隔您想要的图像。
  • 实际上我的数据集有 366 个文件夹,这意味着每天的文件夹涵盖 1 年的持续时间,每个文件夹包含 51-55 个图像,其中我只需要 36 个图像来构建神经网络......我附上一些截图供参考
  • 首先您可以使用os.listdir() 获取所有文件夹作为列表,接下来您可以再次使用os.listdir(folder) 获取每个文件夹的文件名列表。列表中的每个项目都有自己的编号/索引。或者您可以使用glob.glob()* 将所有文件夹中的所有文件名作为列表。同样,列表中的每个元素都有自己的编号/索引
  • 您想要从所有图像中提取 36 张图像,还是希望每天获得 36 张图像?
  • 我想要每个文件夹中的 36 张图片.....意味着每一天

标签: python machine-learning deep-learning image-preprocessing


【解决方案1】:

列表中的每个元素都有自己的编号/索引 - 所以首先您可以创建包含所有文件名的列表。

您可以使用os.listdir() 获取所有文件夹,然后使用os.listdir(folder) 获取每个文件夹以获取文件夹中包含文件名的列表。

import os

base = '/home/furas/images/2021'

folders = os.listdir(base)

all_filenames = []

for folder_name in folders:

    # add base path to folder name to have full path
    full_path = os.path.join(base, folder_name)
    print(full_path)
    
    # get filenames (without path) in folder
    filenames = os.listdir(full_path)
    
    # add path to filenames
    filenames = [os.path.join(full_path, name) for name in filenames]
   
    all_filenames.append(filenames)
    
print(all_filenames)    

这样你就有了包含所有文件名的二维列表(带有完整路径),你可以选择它们。

某一天的前 36 张图片

selected = all_filenames[day_index][:36]

每天前 36 张图片

selected = []

for day in all_filenames:
    selected.append( day[:36] )

每天随机拍摄 36 张图片

import random

selected = []

for day in all_filenames:
    selected.append( random.choices(day, 36) )

【讨论】:

  • 我可以创建一个目录,其中包含与这些文件路径对应的图像,因为我必须对这些图像进行图像预处理
  • 我不知道你的意思是什么路径,但你可以使用os.makedirs(some_path, exist_ok=True)。如果不存在,它将创建目录。如果目录存在,那么它将跳过它(没有错误消息)。