我的文件夹中有100个jpg文件,名为" f1"
我想在文件夹中加载所有jpg图像" f1"用MATLAB和逐个工作。
- dList = dir(' C:/ f1 / * .Jpg');获取f1中的所有jpgs。
- k = length(dList);就这样。
- for i = 1:1:k
醇>
但我不知道如何逐一做到这一点
但我想用imread导入它。
那我该怎么办?
im = imread ('C: / f1 / *. jpg');
k = length (im);
for i = 1: 1: k
{
...
}
我可以使用它吗?
我每次都会收到错误。
dList = dir ('C: / Set14 / *. BMP');
k = length (dList);
for i = 1: 1: k
im = imread ('C: \ f1 \ *. jpg' \\\\\\<- read the "k"th image!//////);
你想怎么做?
答案 0 :(得分:2)
另一种方法是创建所有图像的datastore
,然后按1读取它们。 documentation(这个例子来自那里)
location = fullfile(matlabroot,'toolbox','matlab','demos'); %Example path
%location = 'C: / f1 /'; %Your path
ds = datastore(location,'Type','image','FileExtensions',{'.jpg'}); %Read .jpg images
for i = 1:length(ds.Files)
data = readimage(ds,i);
%DO something
end
datastore
有两个主要好处(第三个是个人好处):
1)它允许您收集单个变量中的所有图像,而无需实际读取它们。我发现这更容易调试,特别是如果文件来自多个地方。
2)根据您要返回的内容,您可以将其与mapreduce
结合使用以并行化您的代码
3)我个人认为这种表示法比让我自己循环遍历文件列表要困惑得多。但这又是个人偏好。
答案 1 :(得分:1)
dir()
将返回一个结构数组,其中包含文件夹和文件名的单独字段。因此,您可以循环遍历数组以逐个加载单个图像:
dList = dir ('C: / f1 / *. Jpg');
for k = 1 : length(dList)
im = imread([dList(k).folder '/' dList(k).name]);
% do your stuff
end