一个matlab获取目录中图像名称及路径的递归实现~
matlab源文件
getImageList.m
- function [ imageList ] = getImageList( imageListCur, rootDir, imageDir, imageType )
- % 输入参数说明:
- % imageListCur 当前的图像列表,第一次执行递归时其为空
- % rootDir 图像文件夹所在的根目录,第一次执行递归时其为空
- % imageDir 图像所在的目录
- % imageType 图像的类型
- % 输出参数说明:
- % imageList 图像文件夹(包含其中子目录)中的所有图像列表与当前图像列表的并集
- % imageList(j).id 第j个图像的标识符
- % imageList(j).name 第j个图像的名字
- % imageList(j).dir 第j个图像的所在目录
- % 作者:
- % raocong
- curDir = pwd;
- % 进入指定的图像目录
- cd( imageDir );
- % 开始做事
- imageEnum = dir( [ '*.' imageType ] );
- imageList = imageListCur;
- nCurImgNum = length( imageList );
- for i = 1 : length( imageEnum )
- nCurImgNum = nCurImgNum + 1;
- imageList( nCurImgNum ).id = nCurImgNum - 1;
- imageList( nCurImgNum ).name = imageEnum( i ).name;
- imageList( nCurImgNum ).dir = [ rootDir '/' imageDir ];
- end
- fileEnum = dir;
- for i = 1 : length( fileEnum )
- if strcmp( fileEnum(i).name, '.' ) || strcmp( fileEnum(i).name, '..' )
- continue;
- end
- if fileEnum(i).isdir
- % 递归调用自身
- imageList = getImageList( imageList, [ rootDir '/' imageDir ], fileEnum(i).name, imageType );
- end
- end
- % 做完事之后回到根目录
- cd( curDir );
- end
getImageListInSpecifiedFolder.m
- function [ imageList ] = getImageListInSpecifiedFolder( imgDirectory, imgType )
- % 输入参数:
- % imgDirectory 图像存放的目录,例如当前目录下的Temp文件夹
- % imgType 查找的图像类型
- % 输出参数:
- % imageList 图像列表包含图像文件名及其所在目录
- % 作者:
- % raocong
- % 初始化图像列表结构体
- imageList = struct( 'id', [], 'name', [], 'dir', [] );
- % 得到imgDirectory目录下类型为imgType的所有图像列表
- imageList = getImageList( imageList, [], imgDirectory, imgType );
- % 删除第一个空值元素
- imageList(1) = [];
- end
run.m
- clc;
- clear all;
- addpath( pwd );
- % 得到Temp目录及其子目录中所有的Jpg格式的文件列表
- imageList = getImageListInSpecifiedFolder( 'temp', 'jpg' );
- % 显示结果
- % imageList(j).id 第j个图像的标识符
- % imageList(j).name 第j个图像的名字
- % imageList(j).dir 第j个图像的所在目录
- disp( 'ID Name & Folder' );
- for i = 1 : length( imageList )
- disp( [ num2str( imageList(i).id ) ' ' imageList(i).name ' ' imageList(i).dir ] );
- end
实验结果