2013-03-27 17 views
5

Ho determinate immagini in una directory e voglio caricare tutte quelle immagini per fare qualche elaborazione. Ho provato a utilizzare la funzione load.Carica tutte le immagini da una directory

imagefiles = dir('F:\SIFT_Yantao\demo-data\*.jpg');  
nfiles = length(imagefiles); % Number of files found 
for i=1:nfiles 
currentfilename=imagefiles(i).name; 
I2 = imread(currentfilename); 
[pathstr, name, ext] = fileparts(currentfilename); 
textfilename = [name '.mat']; 
fulltxtfilename = [pathstr textfilename]; 
load(fulltxtfilename); 
descr2 = des2; 
frames2 = loc2; 
do_match(I1, descr1, frames1, I2, descr2, frames2) ; 
end 

sto ottenendo un errore come in grado di leggere xyz.jpg Nessun file o directory trovati, dove xyz è la mia prima immagine in quella directory.
Voglio anche caricare tutti i formati di immagini dalla directory invece di solo jpg ... come posso farlo?

risposta

9

Si può facilmente caricare più immagini con lo stesso tipo come segue:

function Seq = loadImages(imgPath, imgType) 
    %imgPath = 'path/to/images/folder/'; 
    %imgType = '*.png'; % change based on image type 
    images = dir([imgPath imgType]); 
    N = length(images); 

    % check images 
    if(~exist(imgPath, 'dir') || N<1) 
     display('Directory not found or no matching images found.'); 
    end 

    % preallocate cell 
    Seq{N,1} = [] 

    for idx = 1:N 
     Seq{d} = imread([imgPath images(idx).name]); 
    end 
end 
+0

Ho dovuto cambiare percorso a 'percorso/a/immagini/cartella /' per farlo funzionare. Ancora buona soluzione – Dcortez

+0

Consiglio vivamente di utilizzare 'fullfile' per creare il percorso dell'immagine dalla cartella e dal nome file in modo che le barre finali e le differenze tra i file system siano correttamente considerate. – Suever

1

Il percorso completo (directory inc.) Non è contenuto in imgfiles.name, solo il nome del file, quindi non può trovare il file perché non è stato detto dove cercare. Se non vuoi cambiare directory, usa di nuovo fullfile durante la lettura del file.

Stai anche utilizzando la funzione sbagliata per leggere le immagini - prova imread. Altre note: it's best not to use i for variables e il tuo loop sta sovrascrivendo I2 ad ogni passaggio, quindi ti ritroverai con una sola immagine, non con quattro.

+0

Come posso dare fullfile di nuovo quando sto leggendo l'immagine..può scrivere il codice ?? – aushima

+0

Avete effettivamente ** guardato ** alla [documentazione] (http://www.mathworks.co.uk/help/matlab/ref/fullfile.html) per 'fullfile'? – wakjah

1

È possibile utilizzare l'oggetto imageSet in Computer Vision System Toolbox. Carica i nomi dei file immagine da una determinata directory e ti dà la possibilità di leggere le immagini in sequenza. Ti dà anche la possibilità di ricorrere in sottodirectory.

Problemi correlati