python - 在 Python 中提取多个图像文件名中的细节并将它们添加为数据集的标签
问题描述
我有一个包含 1300 个 .JPEG 文件的文件夹,所有这些文件的文件名都按特定顺序排列。
每个文件名的顺序是 category_count_randomString.JPEG。举个例子,下面是文件夹中的一张图片:
13_2_5jdf.JPEG
其中 13 是类别,2 是图像中该类别的计数,后跟随机字符串。
我希望能够:
- 从每个文件名中提取类别并将它们分配为标签(然后构建 CNN 模型)和
- 从每个文件名中提取类别的计数,并将它们分配给向量/数组。
现在,我刚刚使用 glob 函数加载了图像(还没有作为数组)。
import glob
data = '/Users/Data'
images = glob.glob(data+'/*.JPEG')
我是编码新手,所以我正在寻找能够提供“防白痴”编码行的人,我可以将其合并到我的笔记本中以完成这项工作。
解决方案
您可以使用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])
推荐阅读
- java - org.gradle.tooling.BuildException:无法使用 Gradle 分发版“https://services.gradle.org/distributions/gradle-3.1-bin.zip”执行构建
- php - Prestashop - 模块中的 index.php?controller=404
- android - 如何更改在 TargetSDK 21 中完美运行的 TargetSDK 23 的按钮背景?
- python - Python 3:我尝试打开 pdf 时出现消息错误
- c# - 覆盖基类的内部 get-only 属性
- azure-active-directory - Azure Active Directory 中的可配置令牌生命周期(公共预览版)
- oauth-2.0 - KeyCloak 服务器的自省端点
- vba - Microsoft Excel VBA - 运行时错误 438
- python - 汇总海量数据
- javascript - 如何在反应中使用参数