2015-05-14 75 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 
相關問題