做图像处理实验,经常需要遍历当前文件下所有图片。matlab当然很早就考虑了这个问题,库函数dir就是完成这个工作的。函数返回的是一个存放所有目录下文件信息的结构体,通过遍历结构体就可以达到访问所有文件的目的了。具体实现见下面程序:

imgPath = 'E:/imageData/'; % 图像库路径
imgDir = dir([imgPath '*.jpg']); % 遍历所有jpg格式文件
for i = 1:length(imgDir) % 遍历结构体就可以一一处理图片了
img = imread([imgPath imgDir(i).name]); %读取每张图片
end

  上面imgDir返回的是一个结构体,包含每个图片name(名称),date(日期),bytes(字节数),isdir(是否为文件夹/目录),datenum(修改日期,连续日期号码)。一般我们仅需使用图片名称就可以完成图片遍历的工作。

2. 遍历当前文件夹下所有子文件夹中所有图片

如果有做co-segmentation、多图像分类或者co-saliency等方向的人,经常会遇到需要访问不同分类图片文件夹下的图片。这时候我们就需要先遍历所有子文件夹,然后依次再遍历每个子文件夹下的图片。程序如下:

imgDataPath = 'E:/imageData/';
imgDataDir = dir(imgDataPath); % 遍历所有文件
for i = 1:length(imgDataDir)
if(isequal(imgDataDir(i).name,'.')||... % 去除系统自带的两个隐文件夹
isequal(imgDataDir(i).name,'..')||...
~imgDataDir(i).isdir) % 去除遍历中不是文件夹的
continue;
end
imgDir = dir([imgDataPath imgDataDir(i).name '/*.jpg']);
for j =1:length(imgDir) % 遍历所有图片
img = imread([imgDataPath imgDataDir(i).name '/' imgDir(j).name]);
end
end
上面需要注意去除两个系统自带的隐藏文件夹,这个在dir函数读取所有文件时候也会全部遍历出来,然后去除非子文件夹的文件。当然,如果当前文件夹下也有图片,if语句最后一个条件不用判断了。

matlab遍历文件夹下所有图片和遍历所有子文件夹下图片的更多相关文章

  1. Windows下对文件夹下所有图片批量重命名(附C++,python,matlab代码)

    https://blog.csdn.net/u011574296/article/details/72956446: Windows下对文件夹下所有图片批量重命名(附C++,python,matlab ...

  2. java 遍历指定目录下的文件夹并查找包含指定关键字的文件

    输入指定关键字,在制定目录中查找包含关键字的文件,返回包含指定关键字的文件路径. package net.xsoftlab.baike; import java.io.File; import jav ...

  3. linux文件夹操作及递归遍历文件夹

    文件夹相关函数介绍 //mkdir 函数创建文件夹 #include <sys/stat.h> #include <sys/types.h> int mkdir(const c ...

  4. DFS遍历拷贝所有子文件夹及目录列表 (Java版)

    如题 注意,文件夹是不能拷贝的, 需要mkdir的 文件选择合适的流进行拷贝 main测试方法 /** * 主测试类,默认将D:\\base01 下的复制到D:\\base02 * @param ar ...

  5. IO流-递归遍历目录下指定后缀名结尾的文件名称

    /* *自定义遍历目录下指定后缀名结尾文件的名称的方法: * * param file:指定目录 name:指定后缀名 */ 1 public static void FileName(File fi ...

  6. Linux下如何遍历指定目录下的所有文件并删除指定天数之前创建的文件

    脚本内容如下: #!/bin/bash function delete_file { days=$[$-] for i in `find $dir -type f -ctime +$days` do ...

  7. 算法积累:解决如何获取指定文件夹路径或者文件路径下所有子文件后缀为.h .m .c的文本的行数

    1.先解决如何获取一个文件的代码行数 一开始对于这个问题,我的思路就回荡在:1字符串子字符串的判断 2循环直到结束的想法 3将原来是"\n"替换掉之类的想法 一个问题总会有多种解决 ...

  8. Java解压上传zip或rar文件,并解压遍历文件中的html的路径

    1.本文只提供了一个功能的代码 public String addFreeMarker() throws Exception { HttpSession session = request.getSe ...

  9. java基础 File与递归练习 使用文件过滤器筛选将指定文件夹下的小于200K的小文件获取并打印按层次打印(包括所有子文件夹的文件) 多层文件夹情况统计文件和文件夹的数量 统计已知类型的数量 未知类型的数量

    package com.swift.kuozhan; import java.io.File; import java.io.FileFilter; /*使用文件过滤器筛选将指定文件夹下的小于200K ...

随机推荐

  1. 5.API详解

    Dao 中需要通过 SqlSession 对象来操作 DB.而 SqlSession 对象的创建, 需要其工厂对象 SqlSessionFactory.SqlSessionFactory 对象, 需要 ...

  2. go语言入门(7)面向对象编程

    1,概述     对于面向对象编程的支持Go 语言设计得非常简洁而优雅.因为, Go语言并没有沿袭传统面向对象编程中的诸多概念,比如继承(不支持继承,尽管匿名字段的内存布局和行为类似继承,但它并不是继 ...

  3. Django—处理流程

    用户通过浏览器发送请求 请求到达request中间件,中间件对request请求做预处理或者直接返回response 若未返回response,会到达urlconf路由,找到对应视图函数 视图函数做相 ...

  4. elasticsearch联想加搜索实例

    //搜索框具体的ajax如下: <form class="form-wrapper cf"> <img src="__PUBLIC__/Home/img ...

  5. spring 的自动定时任务

    spring的自动定时任务有两种 第一种:通过xml配置来设置 需要在xml中引入新的约束,并且需要配置<task:scheduled-tasks> ,主要配置内容如下: <?xml ...

  6. React 入门与实战-课时7 虚拟DOM的本质和目的

    DOM树的概念: 一个网页呈现的过程: 1.浏览器请求服务器获取页面HTML代码 2.浏览器先在内存中,解析DOM结构,并在浏览器内存中,渲染出一颗DOM树: 3.浏览器把DOM树,呈现到页面上: R ...

  7. 信息: JSF1048:有 PostConstruct/PreDestroy 注释。标有这些注释的 ManagedBeans 方法将表示注释已处理。

    在Myeclipse运行项目时,控制台会输出如下信息,但是项目正常运行,没有异常,还不知道怎么解决 信息: JSF1048:有 PostConstruct/PreDestroy 注释.标有这些注释的 ...

  8. MyBatis-08-使用注解开发

    8.使用注解开发 8.1.面向接口编程 面向接口编程的根本原因:解耦,可拓展,提高复用,分层开发中.上层不用管具体的实现,大家都遵守共同的标准,使得开发变得容易,规范性好 8.2.使用注解开发 注解在 ...

  9. UnicodeDecodeError: 'utf-8' codec can't decode byte 0xd0 in position 140: invalid continuation byte

    web阅片系统,遇到dicom文件在文件夹不能正常读取的问题.解决方法如下: def rep7(request): file_path = os.path.dirname(__file__) + re ...

  10. initramfs机制

    1.什么是 Initramfs 在2.6版本的linux内核中,都包含一个压缩过的cpio格式的打包文件.当内核启动时,会从这个打包文件中导出文件到内核的rootfs文件系统,然后内核检查rootfs ...