Хранение пути к папкам и внутренним папкам - PullRequest
2 голосов
/ 26 апреля 2020

У меня проблемы с чтением из подпапок, которые находятся внутри папки. То, что я пытаюсь сделать, это: у меня есть мой путь "C: \ Dataset", который имеет 2 папки внутри них Пьяный или Трезвый и внутри обеих папок, у меня есть имена людей, которые имеют изображения, например: "C: \ Dataset \ Drunk \ JohnDoe \ Pic1 "," C: \ Dataset \ Sober \ JaneDoe \ Pic1 ". Я хочу иметь возможность читать каждое изображение и сохранять их в переменной пути.

На данный момент, что я получил, в основном, я получаю изображения, пока они находятся только внутри Пьяного и Трезвого, например: '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

По сути, я пытаюсь сделать то, что, когда я повторяю внутри папки «Пьяный» он также перебирает внутренние папки, считывая путь к изображениям, которые находятся в C: \ Dataset \ Drunk \ JohnDoe \ nthPi c, C: \ Dataset \ Drunk \ JoeDoe \ nthPi c, C: \ Dataset \ Drunk and Sober \ nthJoe \ nthPi c C: \ Dataset \ Drunk \ JamesDoe \ nthPi c. Поэтому, когда я делаю cv2.imread, он захватывает всю карту папок

enter image description here

Это моя основная цель.

1 Ответ

1 голос
/ 26 апреля 2020

Вам нужно еще одно вложение: он сохраняет все изображения в словаре 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)
...