есть ли функция Python для чтения нескольких изображений из папки в один массив - PullRequest
1 голос
/ 04 мая 2019

Я пытаюсь прочитать несколько изображений из папки в одном массиве, чтобы передать их в мою модель глубокого обучения. когда я печатаю форму, я получаю сообщение об ошибке, что ни один тип объекта не имеет формы. это означает, что изображения не были прочитаны opencv (для jpg) / tifffile (для .tif) Мой код выглядит следующим образом

import numpy as np
import cv2 as cv
import tifffile as tiff

filepath1 = "D:/Programs/transnet/dataset/train"
filepath2 = "D:/Programs/transnet/dataset/train_label"
img = np.ndarray((cv.imread(filepath1 + "*.jpg")))
clt = np.ndarray((tiff.imread(filepath2 + "*.tif")))

print(img.shape)
print(clt.shape)

Я уже пробовал glob.glob, но он не работает. я ожидаю 4-х мерный массив количества изображений RGB

1 Ответ

1 голос
/ 04 мая 2019

Вы можете использовать модуль os для выполнения операций с файлами, особенно os.listdir и os.path.join следующим образом

import os

def get_all_images(folder, ext):

    all_files = []
    #Iterate through all files in folder
    for file in os.listdir(folder):
        #Get the file extension
        _,  file_ext = os.path.splitext(file)

        #If file is of given extension, get it's full path and append to list
        if ext in file_ext:
            full_file_path = os.path.join(folder, file)
            all_files.append(full_file_path)

    #Get list of all files
    return all_files

filepath1 = "D:/Programs/transnet/dataset/train"
filepath2 = "D:/Programs/transnet/dataset/train_label"

#List of all jps and tif files
jpg_files = get_all_images(filepath1, 'jpg')
tif_files = get_all_images(filepath2, 'tif')

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

...