MATLAB如何依次显示文件夹中的所有图像?

时间:2018-05-02 07:48:53

标签: matlab

我的文件夹中有100个jpg文件,名为" f1"

我想在文件夹中加载所有jpg图像" f1"用MATLAB和逐个工作。

  
      
  1. dList = dir(' C:/ f1 / * .Jpg');获取f1中的所有jpgs。
  2.   
  3. k = length(dList);就这样。
  4.   
  5. for i = 1:1:k
  6.   

但我不知道如何逐一做到这一点

但我想用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!//////);

你想怎么做?

2 个答案:

答案 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