我很难读取文件夹内的子文件夹。我想做的是:我的路径“ 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时,它将获取整个文件夹映射
这基本上是我的目标。
您需要再嵌套一个:它将所有图像保存在字典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)