Matlab 读取文件夹以及子文件夹图片的方法

来源:互联网 发布:淘宝为什么不能付款 编辑:程序博客网 时间:2024/06/11 18:56

最近在写一个报告,要用Matlab读取中科院的虹膜图片库然后进行处理,下载地址:CASIA Iris Image Database (version 1.0),http://www.cbsr.ia.ac.cn/IrisDatabase.htm 。 一共108个文件夹,每个文件夹有2个子文件夹,第1个子文件夹有3张图片,第2个有4张,共756张图片,而且图片的名字也比较怪,比如图片 ‘017_1_3.bmp’ 指的是第17个参与者,第一次拍的第3张图片,而且从第1-9的文件夹前面都会加上‘00’,如图:


费了好大工夫终于用字符串连结的方法把问题解决了,然后把图片存入一个89600*756的矩阵里(图片的规格是320*280),方便以后处理。话不多说,上代码:

% CASIA database file conversion clear all;%文技夹目录path='CASIA Iris Image Database (version 1.0)\00';%子文件夹目录subpath='00';for i=1:108                if i>=10                path='CASIA Iris Image Database (version 1.0)\0';                subpath='0';            end                        if i>=100                 path='CASIA Iris Image Database (version 1.0)\';                 subpath='';            end        for j=1:2        %第一个文件夹,3张图片        if j==1        for k=1:3                   %读取目录filesrcpath1 = strcat(path,num2str(i),'\',num2str(j),'\',subpath,num2str(i),'_',num2str(j),'_',num2str(k),'.bmp');       %写入目录    filedespath1 = strcat(path,num2str(i),'_',num2str(j),'_',num2str(k),'.jpg');        im = imread(filesrcpath1,'bmp');        %图片重构 从320*280 到 1*89600,共756张图片 89600*756data(:,7*(i-1)+k) = reshape(im,1,280*320);        %写入同一个文件夹里imwrite(im,filedespath1,'jpg');               end        end        %第2个文件夹,4张图片        if j==2        for h=1:4        %读取目录filesrcpath2 = strcat(path,num2str(i),'\',num2str(j),'\',subpath,num2str(i),'_',num2str(j),'_',num2str(h),'.bmp');         %写入目录filedespath2 = strcat(path,num2str(i),'_',num2str(j),'_',num2str(h),'.jpg');        im = imread(filesrcpath2,'bmp');        %图片重构 从320*280 到 1*89600,共756张图片 89600*756data(:,7*i-4+h) = reshape(im,1,280*320);        %写入同一个文件夹里imwrite(im,filedespath2,'jpg');               end        end            endend%存入矩阵save data.mat data;
以后处理的时候只要读取 data.mat 就可以了。

原创粉丝点击