我是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/*/'):
但是当我检查列表时,所有条目都是无。
答案 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"
dirname()
提取目录的路径basename()
提取目录路径的最后一部分