循環讀取文件夾中的圖片matlab代碼


參考:http://blog.csdn.net/guoxiaojie_415/article/details/21317323;http://blog.csdn.net/qikaihuting/article/details/70244416;http://blog.csdn.net/qq_18343569/article/details/50960254

本篇博文僅針對於循環讀取指定文件夾下的圖片文件,不涉及深度和層度遍歷,但是本文循環讀取的方式是以深度遍歷為基礎的,涉及到isdir函數,如果僅僅是讀取某個文件夾下的某種特定擴展名文件,可以使用dir('*.m')

Function函數

function [subdirpath] = RangTraversal(strPath)

maindir = strPath;   //strPath是string類型的字符串
subdir  = dir(maindir);  //列出指定目錄下所有子文件夾和文件
subdirpath = cell(1, length(subdir));

for j = 1 : length( subdir )
    if (~( isequal( subdir(j).name, '.' )|| isequal( subdir(j).name, '..'))) %|| ~subdir(j).isdir //subdir.name是每個文件的完整名字,不包括路徑
        subdirpath{j} = fullfile(maindir, subdir(j).name); //這里的maindir表示路徑,fullfile表示將路徑和文件名字合起來
    end
end

 Matlab使用dir函數獲得指定文件夾下的所有子文件夾和文件,並存放在在一種為文件結構體數組中,這個數組各結構體內容如下:

name    -- 文件名

date    -- 修改日期

bytes   -- 文件大小

isdir   -- 目錄是1,不是為0

datenum -- matlab中特定的修改日期

 

dir函數可以有調用方式為:
 
dir('.')列出當前目錄下所有子文件夾和文件
dir('G:\Matlab')列出指定目錄下所有子文件夾和文件

dir('*.m')列出當前目錄下符合正則表達式的文件夾和文件

 

fullfile函數作用是利用文件各部分信息創建並合成完整文件名,它的好處在於智能拼接,比如路徑為C:\Users\Administrator\Desktop,文件名為1.jpg,拼接之后為C:\Users\Administrator\Desktop\1.jpg,而strcat不會自己添加\

調用RangTraversal函數

subdirpath  = RangTraversal( '../sampleImages' );
filename = cell(1, length(subdirpath));
path_ab = cell(1, length(subdirpath));
suffix = {'.jpg', '.bmp', '.tiff', '.png'};

for i = 1 : length(subdirpath)
   if(subdirpath{i} ~= 0)
       [path_ab{i}, filename{i}] = fileparts(subdirpath{i});
       rgb = imread(subdirpath{i});//這里有一個代碼隱患,前面的函數中列出了所有子文件夾和文件,並不全是圖片文件
 gray = rgb2gray(rgb); for j = 1 : length(suffix) path_wr = strcat('../results/savedimages/', [filename{i}, suffix{j}]); imwrite(gray, path_wr); end end end

這段代碼的作用是循環讀取文件夾內的圖片,然后將其灰度化,將灰度化后的圖片存入新的文件夾。

 fileparts在FreeMat、Matlab中,該函數用於將一個文件的完整路徑中各部分提取出來。 
語法格式: 
[pathstr, name, ext] = fileparts(filename) 
其中filename是要解析的文件的完整路徑,例如:E:\games\IGI\bin\IGI.exe。fileparts將這個文件名(包含完整路徑信息)各部分分別提取到四個變量中。 
其中pathstr是這個文件的路徑名,name是文件名,ext是包含一個點號文件的擴展名(指定了文件的類型)。 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM