2014-02-07 53 views
1

我有一個包含多個文件夾的目錄。這些文件夾中的每個都包含多個圖像從子目錄中讀取圖像

如果我們假設我們有一個包含圖像的目錄,我知道如何閱讀這些圖像(請參閱下面的代碼);如果我們假設這些圖像被放置在這個目錄的子目錄中,那麼我不知道如何編輯我的代碼。

directory = 'my_direct'; 
dnames1={directory}; 
c{1} = dir(dnames1{1}); % struct array with 5 fileds (name, isdir,...) 

if length(c{1}>0) 
    if c{1}(1).name =='.' 
     c{1} = c{1}(3:end); %ignore the '.' and '..' 
    end 
end 

for k = 1: length(c{1}) 
    image= double(imread([dnames{1} '/' h{1}(L).name]))./255; 
end 

回答

2

假設你想要去的每個子目錄中,讀取圖像

Root_directory='The directory location'; 
sub_directories=dir(Root_directory); 
sub_directories(1,2)=[]; % to remove . and .. 
for sub_dir_index=1:length(sub_directories) 
    images=dir(fullfile(Root_directory,sub_directories(sub_dir_index).name)); 

    the rest of your code 

end 
1

您可以使用此代碼讀取多個圖像,你應該知道的是路徑到該目錄。只需編寫路徑,代碼將根據您存儲的圖案讀取圖像。我希望你會覺得它有用。

myFolder = 'path'; 
if ~isdir(myFolder) 
    errorMessage = sprintf('Error: The following folder does not exist:\n%s', myFolder); 
    uiwait(warndlg(errorMessage)); 
    return; 
end 
filePattern = fullfile(myFolder, '*.jpg'); 
jpegFiles = dir(filePattern); 
for i = 1:length(jpegFiles) 
    baseFileName = jpegFiles(i).name; 
    fullFileName = fullfile(myFolder, baseFileName); 
    fprintf(1, 'Now reading %s\n', fullFileName); 
Input_image = imread(fullFileName); 
end 
+0

感謝您的回答:) – Christina

1

如果你有MATLAB的R2014b發佈與計算機視覺系統工具箱,你可以使用imageSet對象:

imgSets = imageSet('my_direct','recursive') 

imgSetsimageSet對象的數組,每個都包含了路徑爲my_direct的子目錄中的所有圖像文件。然後,您可以從第i個子目錄中讀取第j個圖像,如下所示:

im = read(imgSets(i), j);