matlab遍歷文件制作自己的數據集 .mat文件


 

原文作者:aircraft

原文地址:https://www.cnblogs.com/DOMLX/p/9115788.html

 

看到深度學習里面的教學動不動就是拿MNIST數據集,或者是IMGPACK數據集來教學,這些都是已經制作好的數據集,我們大家肯定都很疑惑怎么制作自己的數據集呢?

 

接下來我就自己制作了一個數據集,圖片3600張,每張的高寬分別為240-320

 

獲取根目錄下所有子文件夾:

PathRoot = 'F:\process\master\100';
list = dir(PathRoot);

 

 

獲取在下一層的所有子文件夾,因為我們的數據很多時候都是不在一個文件夾,或者是在一個大文件夾中的很多小文件中,所以這時候就需要多重遍歷,一層,一層的遍歷下去,拿到我們想要的所有數據

  至於這里為什么是 3 開始?  這是因為dir()函數會將 文件夾的   . 和 .. 路徑。

  估計你們不懂(dir()函數會將 文件夾的   . 和 .. 路徑。)我這什么意思,簡單。直接打印一下出來看看就知道了。  打印 list(1).name     list(2).name   打印完看看輸出 你們就知道我的意思了

for i = 3:fileNums
    subList = dir([PathRoot '\' list(i).name]);
end

 

好了接下來把所有代碼給出:

下面就是遍歷一個F:\process\finger_vein-master\db100\098\left  這樣的路徑,數據都在db100 里面的每一個小文件夾(001-002-003)中的left  和 right 中

這里用matlab 三重遍歷文件提取數據 

最后全部保存在 imgPack中

在用 save 的函數 將數據集保存成   .mat 文件

PathRoot = 'F:\process\master\100';
num = 1;

list = dir(PathRoot);
fileNums = size(list);
imgPack = zeros(240,320,3600);
for i = 3:fileNums
    subList = dir([PathRoot '\' list(i).name]);
    for j =3:size(subList)
        lastList = dir([PathRoot '\' list(i).name '\' subList(j).name]);
        for k = 3:size(lastList)
            path = [PathRoot '\' list(i).name '\' subList(j).name '\' lastList(k).name];
            image = imread(path);
            grayImg = rgb2gray(image);
            imgPack(:,:,num) = grayImg;
            num = num + 1;    
        end
    end
end
save imgPack imgPack;

 

若有興趣交流分享技術,可關注本人公眾號,里面會不定期的分享各種編程教程,和共享源碼,諸如研究分享關於c/c++,python,前端,后端,opencv,halcon,opengl,機器學習深度學習之類有關於基礎編程,圖像處理和機器視覺開發的知識


免責聲明!

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



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