在 Python 中的多个图像文件名中提取细节并将它们添加为数据集的标签

Extract details in multiple image filenames in Python and add them as labels for a dataset

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

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

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

我希望能够:

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

目前,我刚刚使用 glob 函数加载了图像(尚未作为数组)。

import glob

data = '/Users/Data'

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

我是编码新手,所以我正在寻找能够提供 'idiot-proof' 行编码的人,我可以将这些代码合并到我的笔记本中以完成这项工作。

您可以使用 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])