2015-05-14 3 views
5

Загрузка и сохранение изображений в OpenCV довольно ограничена, поэтому ... Каковы предпочтительные способы загрузки всех изображений из данной папки? Должен ли я искать файлы в этой папке с расширениями .png или .jpg, хранить имена и использовать imread с каждым файлом? Или есть лучший способ?Загрузка всех изображений с помощью imread из заданной папки

ответ

7

Почему бы просто не попробовать загрузить все файлы в папке? Если OpenCV не сможет его открыть, хорошо. Перейдите к следующему. cv2.imread() возвращает None, если изображение не открывается. Странно, что это не вызывает исключения.

import cv2 
import os 

def load_images_from_folder(folder): 
    images = [] 
    for filename in os.listdir(folder): 
     img = cv2.imread(os.path.join(folder,filename)) 
     if img is not None: 
      images.append(img) 
    return images 
3

вы можете использовать функцию glob для этого. Смотрите пример

import cv2 
import glob 
for img in glob.glob("path/to/folder/*.png"): 
    cv_img = cv2.imread(img) 
6
import glob 
cv_img = [] 
for img in glob.glob("Path/to/dir/*.jpg"): 
    n= cv2.imread(img) 
    cv_img.append(n)` 
5

Я использовал skimage. Вы можете создать коллекцию и элементы доступа стандартным способом, то есть col [index]. Это даст вам значения RGB.

from skimage.io import imread_collection 

#your path 
col_dir = 'cats/*.jpg' 

#creating a collection with the available images 
col = imread_collection(col_dir) 
1

Вы также можете использовать matplotlib для этого, попробуйте это:

import matplotlib.image as mpimg 

def load_images(folder): 
    images = [] 
    for filename in os.listdir(folder): 
     img = mpimg.imread(os.path.join(folder, filename)) 
     if img is not None: 
      images.append(img) 
    return images 
Смежные вопросы