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,机器学习深度学习之类有关于基础编程,图像处理和机器视觉开发的知识

matlab遍历文件制作自己的数据集 .mat文件_第1张图片

你可能感兴趣的:(matlab遍历文件制作自己的数据集 .mat文件)