原文作者: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,機器學習深度學習之類有關於基礎編程,圖像處理和機器視覺開發的知識