matlab批量读取图片

  使用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,包含六个属性)

  • dir函数可以有调用方式为:
     
    dir('.')列出当前目录下所有子文件夹和文件
    dir('G:\Matlab')列出指定目录下所有子文件夹和文件
    dir('*.m')列出当前目录下符合正则表达式的文件夹和文件
  • 每次imshow()之前加一个figure(i),可以搞出多个图片显示窗口
  • 8
    点赞
  • 57
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: MATLAB中可以使用`imread`函数来读取图片,可以使用循环批量读取多张图片。下面是一个简单的例子: ```matlab % 设置图片路径 img_folder = 'path/to/folder/'; % 获取文件夹中所有图片文件名 img_files = dir(fullfile(img_folder, '*.jpg')); % 循环读取每张图片 for i = 1:length(img_files) % 读取图片 img = imread(fullfile(img_folder, img_files(i).name)); % 在这里进行图片处理操作 end ``` 在这个例子中,首先设置了图片所在的文件夹路径,然后使用`dir`函数获取该文件夹中所有以`.jpg`结尾的文件名,接着使用循环逐一读取每张图片,并在循环体内进行相应的处理操作。 注意,如果图片文件不是以`.jpg`结尾,需要修改`dir`函数中的参数。另外,也可以使用其他函数来获取文件名,如`ls`或`dir`的其他参数。 ### 回答2: MATLAB可以使用imread函数来批量读取图片。以下是一个示例代码,演示如何使用MATLAB批量读取指定文件夹中的所有图片。 首先,你需要将存储图片的文件夹路径保存到一个变量中,例如: folder = 'C:\Images\'; % 这里需要替换为你自己的图片文件夹路径 然后,你可以使用dir函数来获取该文件夹中所有图片的文件名,例如: fileList = dir([folder '*.jpg']); % 获取所有扩展名为.jpg的图片文件名 接下来,你可以使用循环结构,依次读取每张图片,并将其保存到一个图片数据的数组中,例如: imageData = []; % 初始化图片数据数组 for i = 1:length(fileList) % 遍历所有图片文件 filename = [folder fileList(i).name]; % 拼接每张图片的完整路径 img = imread(filename); % 读取图片数据 imageData = [imageData; img]; % 将图片数据添加到数组中 end 最后,你可以使用imageData数组来进行后续的图像处理和分析。 需要注意的是,该示例代码假设所有图片的扩展名都是.jpg,如果你的图片扩展名不同,需要相应地修改代码中的参数。 希望对你有所帮助!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值