импортировать изображения из папки python в список массивов - PullRequest
0 голосов
/ 28 февраля 2019

У меня есть папка, содержащая 10000 изображений и 3 подпапки, каждая папка содержит разное количество изображений.Я хочу импортировать небольшую часть этих изображений для обучения, этот ограниченный размер я выбираю вручную каждый раз, когда хочу выбрать часть данных.У меня уже есть этот код Python:

train_dir = 'folder/train/' # This folder contains 10.000 images and 3 subfolders , each folder contains different number of images

from tqdm import tqdm
def get_data(folder):
    """
    Load the data and labels from the given folder.
    """
    X = []
    y = []
    for folderName in os.listdir(folder):
        if not folderName.startswith('.'):
            if folderName in   ['Name1']:
                label = 0
            elif folderName in ['Name2']:
                label = 1
            elif folderName in ['Name3']:
                label = 2
            else:
                label = 4
            for image_filename in tqdm(os.listdir(folder + folderName)):
                img_file = cv2.imread(folder + folderName + '/' + image_filename)
                if img_file is not None:
                    img_file = skimage.transform.resize(img_file, (imageSize, imageSize, 1))
                    img_arr = np.asarray(img_file)
                    X.append(img_arr)
                    y.append(label)
    X = np.asarray(X) # Keras only accepts data as numpy arrays 
    y = np.asarray(y)
    return X,y


X_test, y_test= get_data(train_dir)
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X_test, y_test, test_size=0.2)

Я хочу указать Size параметр, чтобы я мог выбрать количество изображений для импорта.количество импортированных изображений из каждой подпапки должно быть равно

1 Ответ

0 голосов
/ 28 февраля 2019

Вы можете прочитать и сохранить все пути из каждой папки в отдельном списке и выбрать равное их количество.

folder1_files = []
for root, dirs, files in os.walk('path/folder1', topdown=False):
    for i in files:
        folder1_files.append("path/folder1/"+i)

для выбора:

train = folder1[:n] + folder2[:n] + folder3[:n]

n - количество изображений в каждой папке

...