zoukankan      html  css  js  c++  java
  • matlab遍历文件夹下所有图片和遍历所有子文件夹下图片

    做图像处理实验,经常需要遍历当前文件下所有图片。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语句最后一个条件不用判断了。

  • 相关阅读:
    基于redission的分布式锁
    kafka在Windows环境下启动
    Synchronized优化总结
    mysql死锁总结
    索引是建立得越多越好吗?
    show processlist 详解
    RocketMQ高可用机制同步刷盘、异步刷盘和同步复制、异步复制
    Redlock红锁总结
    C#2.0泛型
    《解剖PetShop》系列之四:PetShop之ASP.NET缓存 (转)
  • 原文地址:https://www.cnblogs.com/tansuoxinweilai/p/9990191.html
Copyright © 2011-2022 走看看