从子目录递归读取图像

戈登

我被困在应该是这么简单的事情上。

我有一个文件夹,说main_folder有四个子文件夹,比如sub1sub2sub3sub4每个包含超过100个图像。现在正在尝试读取它们并将其存储在数组中。我在网上和一些MATLAB文档中进行了查找:在这里在这里,甚至是官方文档

我的代码是这样的:

folder = 'main_folder/**'; %path containing all the training images
dirImage = dir('main_folder/**/*.jpg');%rdir(fullfile(folder,'*.jpg')); %reading the contents of directory

numData = size(dirImage,1);    %no. of samples

arrayImage = zeros(numData, 133183); % zeros matrix for storing the extracted features from images

for i=1:numData
        ifile = dirImage(i).name;
%         ifolder = dirImage(i).folder;
        I=imread([folder, '/', ifile]);  %%%% read the image  %%%%%
        I=imresize(I,[128 128]);
        ...

如果我尝试上述代码段中的代码,则不会读取图像。但是,如果我将前两行替换为:

folder = 'main_folder/'; %path containing all the training images
dirImage = dir('main_folder/sub1/*.jpg'); %rdir(fullfile(folder,'*.jpg'));

然后sub1读取所有图像我怎样才能解决这个问题?任何帮助将不胜感激。我想一次读取四个子文件夹中的所有图像。我正在使用MATLAB R2015a。

Xiangrui Li

我相信您将需要使用genpath获取所有子文件夹,然后遍历每个子文件夹,例如:

dirs = genpath('main_folder/'); % all folders recursively
dirs = regexp(dirs, pathsep, 'split'); % split into cellstr
for i = 1:numel(dirs)
    dirImage = dir([dirs{i} '/*.jpg']); % jpg in one sub-folder
    for j = 1:numel(dirImage)
        img = imread([dirs{i} '/' dirImage(j).name]);
        % process img using your code
    end 
end

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章