首页 > 解决方案 > 存储文件夹和内部文件夹的路径

问题描述

我在尝试从文件夹内的子文件夹中读取时遇到了困难。我想要做的是:我有我的路径“C:\Dataset”,其中有两个文件夹和两个文件夹,我的人名有图片,例如:“C:\Dataset\Drunk\JohnDoe\Pic1” , "C:\Dataset\Sober\JaneDoe\Pic1"。我希望能够读取每张图片并将它们存储在路径变量中。

目前,到目前为止,我得到的基本上是图像,只要它们仅在 Drunk 和 Sober 中,例如:'C:\Dataset\Drunk\Pic1',以及我用来做的代码这是:

DATADIR = "C:\Dataset"
CATEGORIES = ["Positive", "Negative"]

for category in CATEGORIES:
    path = os.path.join(DATADIR, category)
    for img in os.listdir(path):
        img_array = cv2.imread(os.path.join(path,img), cv2.IMREAD_GRAYSCALE)
        break
    break

基本上,我想做的是,当我在 Drunk 文件夹中进行迭代时,它也会在内部文件夹中进行迭代,读取 C:\Dataset\Drunk\JohnDoe\nthPic、C:\Dataset\Drunk 中图片的路径\JoeDoe\nthPic,C:\Dataset\Drunk and Sober \nthJoe\nthPic C:\Dataset\Drunk\JamesDoe\nthPic。因此,当我执行 cv2.imread 时,它会抓取整个文件夹映射

这基本上是我的目标。

标签: pythonfilepathcv2

解决方案


您还需要一个嵌套:它将所有图像保存在字典images中,键是完整路径。

DATADIR = "C:\Dataset"
CATEGORIES = ["Drunk", "Sober"]

images = {}

for category in CATEGORIES:
    path = os.path.join(DATADIR, category)
    for person in os.listdir(path):
        personfolder = os.path.join(path, person):
        for imgname in os.listdir(personfolder):
            fullpath = os.path.join(personfolder, imgname)
            images[fullpath] = cv2.imread(fullpath, cv2.IMREAD_GRAYSCALE)

推荐阅读