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