【问题标题】:Python: store image and associated folder name in a listPython:将图像和关联的文件夹名称存储在列表中
【发布时间】:2017-08-31 22:01:40
【问题描述】:

我对 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

我编写了以下代码来从火车读取图像

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/*/'):

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

【问题讨论】:

  • 您是说要将每个p 添加到names_path 吗?如果是这样,只需在现有循环中添加 names_path.append(p)
  • 你从哪里运行你的 python 脚本?你已经在Train了吗?
  • 如果您需要提取部分路径(如目录名称),请查看os.path 模块:docs.python.org/3/library/os.path.html
  • @DrewG。不,我想将文件夹名称“ball”、“chair”、“cup”、“bag”保存在 names_path 中。因此,例如,如果第一张图像属于“球”,则将图像的路径保存到 training_paths 并将球保存到 names_path
  • @Harry.Smith 你可以添加names_path.append(os.path.basename(os.path.basename(name))

标签: python loops machine-learning classification glob


【解决方案1】:

如果file_path 是您的图像的路径,您可以通过以下方式获取目录名称:

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

【讨论】:

    【解决方案2】:

    这取决于您实际运行文件的位置,但我认为您的错误是您不需要在 Train 之前使用斜杠。

    变化:

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

    收件人:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-24
      • 1970-01-01
      • 1970-01-01
      • 2022-06-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多