存储文件夹和内部文件夹的路径

问题描述 投票:2回答:1

我很难读取文件夹内的子文件夹。我想做的是:我的路径“ C:\ Dataset”在其中包含2个文件夹Drunk或Sober,并且在两个文件夹中,我都有带有图片的人名,例如:“ C:\ Dataset \ Drunk \ JohnDoe \ Pic1“,” C:\ Dataset \ Sober \ JaneDoe \ Pic1“。我希望能够读取每张图片并将它们存储在path变量中。

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

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

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中图片的路径\ Dunk \ JoeDoe \ nthPic,C:\ Dataset \ Drunk和Sober \ nthJoe \ nthPic C:\ Dataset \ Drunk \ JamesDoe \ nthPic。因此,当我执行cv2.imread时,它将获取整个文件夹映射

enter image description here

这基本上是我的目标。

python filepath cv2
1个回答
1
投票

您需要再嵌套一个:它将所有图像保存在字典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)
© www.soinside.com 2019 - 2024. All rights reserved.