从子目录递归读取图像
Recursively read images from subdirectories
我卡在了本应如此简单的事情上。
我有一个文件夹,比如 main_folder
,有四个子文件夹,比如 sub1
、sub2
、sub3
和 sub4
,每个文件夹包含 100 多张图片.现在我正在尝试读取它们并将它们存储在一个数组中。我浏览了整个互联网和一些 MATLAB 文档:
here, here and even the official doc。
我的代码是这样的:
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。
我相信您将需要使用 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
我卡在了本应如此简单的事情上。
我有一个文件夹,比如 main_folder
,有四个子文件夹,比如 sub1
、sub2
、sub3
和 sub4
,每个文件夹包含 100 多张图片.现在我正在尝试读取它们并将它们存储在一个数组中。我浏览了整个互联网和一些 MATLAB 文档:
here, here and even the official doc。
我的代码是这样的:
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。
我相信您将需要使用 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