Matlab 如何从文件夹中读取前5000个图像

Matlab 如何从文件夹中读取前5000个图像,matlab,Matlab,此处路径将包含所有图像的路径。 第一个*是读取所有256个文件夹。每个256个文件夹包含7k-8k个图像。 通过写入*.jpg,它将读取所有图像,但我想读取前5k图像。我应该如何在Matlab中实现这一点 第二个类似的问题是 data=imageDatastore(fullfile('G:\256\u ObjectCategories') 现在它将创建一个图像数据存储,但我想再次从super folder256_ObjectCategories中的每个256个子文件夹中读取前5k个图像 如何在M

此处路径将包含所有图像的路径。 第一个*是读取所有256个文件夹。每个256个文件夹包含7k-8k个图像。 通过写入*.jpg,它将读取所有图像,但我想读取前5k图像。我应该如何在Matlab中实现这一点

第二个类似的问题是

data=imageDatastore(fullfile('G:\256\u ObjectCategories')

现在它将创建一个图像数据存储,但我想再次从super folder256_ObjectCategories中的每个256个子文件夹中读取前5k个图像


如何在Matlab中完成这项工作?

有许多来自Matlab的支持论坛来完成这项工作。下面是来自Matlab论坛之一的示例代码。我认为这可以解决您的问题

path = dir(fullfile('G:\256_ObjectCategories\*\*.jpg'));

我认为您可以使用
imageDataStore
标记和
splitEachLabel
方法()来做您想做的事情

[imds1,imds2]=拆分每个标签(imds,p)拆分imds中的图像文件 分为两个新数据存储imds1和imds2。新数据存储imds1 包含每个标签的第一个p文件,imds2包含 每个label.p中的剩余文件可以是介于0之间的数字 1表示每个标签中要分配的文件的百分比 到imds1,或一个整数,表示从 要分配给imds1的每个标签

首先,创建数据存储,自动用文件夹名称标记每个图像:

numFiles = length(myfile);
numRows = ceil(sqrt(numFiles));
for k = 1 : numFiles
    thisFileName = fullfile(myfile(k).folder, myfile(k).name);
    thisImage = imread(thisFileName);
    subplot(numRows, numRows, k);
    imshow(thisImage);
end
然后,您可以基于这些标签拆分数据存储,如下所示:

imds = imageDatastore('G:\256_ObjectCategories\*\*.jpg','LabelSource','foldernames');
现在,
imds_5k
将包含每个文件夹(标签)中的前5000个图像,
imds_extra
将包含其他2-3k图像。

您如何定义“第一个”?
[imds_5k, imds_extra] = splitEachLabel(imds,5000);