函數dir
可以使用函數dir,D = DIR(‘directory_name’)返回一個結構數組,包含了文件夾directory_name下的子文件夾和子文件的一些信息,第1個成員是文件名,第4個成員表示是否為文件夾。
要注意的是第1個數組元素和第2個數組元素分別是’.’和’..’,表示當前目錄和上層目錄。
clc;clear; maindir = 'D:\qcc\HDmap_statistics_opendrive\python_code\33782112\'; subdir = dir( maindir ); for i = 1 : length( subdir ) if( isequal( subdir( i ).name, '.' )||... isequal( subdir( i ).name, '..')||... subdir( i ).isdir) % 如果是目錄則跳過 continue; end subdirpath = fullfile( maindir, subdir( i ).name, '*.txt' ); dat = dir( subdirpath ) ; % 子文件夾下找后綴為dat的文件 for j = 1 : length( dat ) datpath = fullfile( maindir, subdir( i ).name, dat( j ).name); fid = fopen( datpath ); % 此處添加你的對文件讀寫操作 %
fclose(fid);
end end
https://blog.csdn.net/qq_39516859/article/details/81844162
1. 遍歷當前文件夾下所有圖片
做圖像處理實驗,經常需要遍歷當前文件下所有圖片。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語句最后一個條件不用判斷了。
————————————————
版權聲明:本文為CSDN博主「無鞋童鞋」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/FX677588/article/details/53126961