Python:在列表中存储图像和关联的文件夹名称

时间:2017-08-31 22:01:41

标签: python loops machine-learning classification glob

我是Python的新手,我想知道是否有人可以帮我解决这个问题。

我有一个文件夹“Train”,子文件夹“ball”,“chair”,“cup”,“bag”,每个子文件夹都包含相关的图像。如:

project/Train/ball/01.jpg
project/Train/chair/02.jpg
project/Train/cup/03.jpg
project/Train/bag/04.jpg

我已经编写了以下代码来从Train中读取图像

names_path = []
training_paths = []

for name in glob.glob('/Train/**/*.jpg'):
    img = cv2.imread(name)
    training_paths.append(name)

对于names_path = []我想存储当前图像的子文件夹(包,聊天,杯子,球)的名称。因此,如果循环中的第一个图像属于球,请将图像路径保存到training_paths,将“球”保存到names_path

我尝试过使用其他循环,例如

for clas in glob.glob('/Train/*/'):

但是当我检查列表时,所有条目都是无。

2 个答案:

答案 0 :(得分:0)

它会依赖您实际运行文件的位置,但我认为您的错误是您在Train之前不需要斜杠。

变化:

glob.glob('/Train/**/*.jpg')

要:

glob.glob('Train/**/*.jpg')

您的代码正在生成一个空列表,因此for循环永远不会运行。

答案 1 :(得分:0)

如果file_path是图像的路径,则可以使用以下命令获取目录名称:

from os import path
file_path = "project/Train/ball/01.jpg"
dir_name = path.basename(path.dirname(file_path))  # "ball"