使用imread可以容易地单张读取图片,那么怎样才能批量读取一个文件夹中的多张图片呢?

 

  • 如果文件夹中的图片已经编号

预置知识:

 

  1. cell元胞数组。cell是一种特殊的数据结构,这个数组中的数据类型是任意的
>> C={1,'cell';{1,2,3},{}}

C =

  2×2 cell 数组

    {[     1]}    {'cell'  }
    {1×3 cell}    {0×0 cell}

>> cell(2,3)

ans =

  2×3 cell 数组

    {0×0 double}    {0×0 double}    {0×0 double}
    {0×0 double}    {0×0 double}    {0×0 double}

使用cell命令可以声明cell数组,声明格式与zeros()函数,ones()函数完全相同。

注意cell数组是用大括号括起来的,可以直接声明,也可以使用C{index}的格式进行索引

 

2.strcat()函数

用来串接字符数组。可以串接一般字符数组,也可以串接元胞数组。

如果两个字符数组都只有一个字符串,那么好说


>> s1='lwz';
>> s2='hhh';
>> strcat(s1,s2)

ans =

    'lwzhhh'

 如果是每个字符数组有多个元素呢?

>> str1={'lwz','hhh'};
>> str2={'lbw','nb'};
>> strcat(str1,str2)

ans =

  1×2 cell 数组

    {'lwzlbw'}    {'hhhnb'}

可以看到是“对位串接”

 

 

现在开始读取图片:

n=10;

I=cell(1,n);
for i=1:n
    imName=strcat(num2str(i),'.pgm');
    I{i}=imread(imName);
end
  • 如果图片没有编号
cd('C:\Users\22926\Desktop\图像工程基础\s1');
file=dir('*.pgm');
[k,len]=size(file);
I=cell(k,1);
for i=1:k
    name=file(i).name;
    I{i}=imread(name);
    figure(i);
    imshow(I{i});
end

注:

  • cd命令的含义是切换当前路径,与DOS命令一样
  • dir命令():
  • Matlab使用dir函数获得指定文件夹下的所有子文件夹和文件,并存放在在一种为文件结构体数组中.(struct,规模是k*6,包含六个属性)

matlab批量读取图片_数组

  • dir函数可以有调用方式为:
     
    dir('.')列出当前目录下所有子文件夹和文件
    dir('G:\Matlab')列出指定目录下所有子文件夹和文件
    dir('*.m')列出当前目录下符合正则表达式的文件夹和文件
  • 每次imshow()之前加一个figure(i),可以搞出多个图片显示窗口