python - 如何从大型图像数据集中选择一些特定的图像?
问题描述
我的数据集有 366 个文件夹,意味着每天的文件夹涵盖 1 年的持续时间,每个文件夹包含 51-55 个图像,其中我只需要 36 个图像来构建神经网络。那么我可以为这些图像分配一些索引并根据它们的索引选择一些..?有人可以建议我这样做的代码..吗?
解决方案
列表中的每个元素都有自己的编号/索引 - 所以首先您可以创建包含所有文件名的列表。
您可以使用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)
这样,您就有了包含所有文件名(带有完整路径)的 2D 列表,您可以选择它们。
某天的前 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) )
推荐阅读
- java - 如何在谷歌地图中将相机设置为用户位置
- javascript - 使用多维数组处理 JSON.parse 时遇到问题
- binary - 如何从 fread 获取 nbit 类型?
- machine-learning - 如何确定 caffe blob 的输入尺寸
- javascript - 最快的布尔值和整数散列?
- gradle-kotlin-dsl - 定义删除任务时出错
- php - PHP:curl通过正则表达式获取隐藏输入的值
- java - 如何仅使用 java 和 jdbc(无 ORM)为基本的 crud 操作实现通用 DAO?
- vue.js - 获取对 vue-router router-link 组件的引用
- php - 使用codeigniter上传生成的图片