首页 > 解决方案 > 在 Python 中提取多个图像文件名中的细节并将它们添加为数据集的标签

问题描述

我有一个包含 1300 个 .JPEG 文件的文件夹,所有这些文件的文件名都按特定顺序排列。

每个文件名的顺序是 category_count_randomString.JPEG。举个例子,下面是文件夹中的一张图片:

13_2_5jdf.JPEG其中 13 是类别,2 是图像中该类别的计数,后跟随机字符串。

我希望能够:

  1. 从每个文件名中提取类别并将它们分配为标签(然后构建 CNN 模型)和
  2. 从每个文件名中提取类别的计数,并将它们分配给向量/数组。

现在,我刚刚使用 glob 函数加载了图像(还没有作为数组)。

import glob

data = '/Users/Data'

images = glob.glob(data+'/*.JPEG')

我是编码新手,所以我正在寻找能够提供“防白痴”编码行的人,我可以将其合并到我的笔记本中以完成这项工作。

标签: pythonextractfilenames

解决方案


您可以使用os获取数据目录中所有文件的列表以及split获取文件名中信息的命令:

import os

data_path = "/Users/Data"

categories = []
counts = []
rand_strs = []

for img_filename in os.listdir(data_path):
    if img_filename.endswith(".JPEG"):
        category, count, rand_str = img_filename.split('.')[0].split('_')
        categories.append(category)
        counts.append(int(count))
        rand_strs.append(rand_str)

然后每个列表的索引都相同,例如,如果您想知道类别 13 的计数,您可以执行

category_idx = categories.index('13')
print "Category %s has %d elements" % (categories[category_idx], counts[category_idx])

推荐阅读