如何将子文件夹中的所有图像分组为8组



我不知道如何开始,但通过共享"文件夹"结构及其元素。它们是:谷歌驱动器ZIP链接要分组的图像已从PMD Sprites Collab下载接下来,我想分享我正在使用的MATLAB代码,尝试"对图像进行分组"。它的设计得益于MATLAB:创建和探索图像分类数据存储:

filepath='C:portrait'; % above the unzipped folder, better full file path
dataFolder=fullfile(filepath);
PortraitIMDS=imageDatastore(filepath,...
'IncludeSubfolders',true,...
'LabelSource','foldernames');
numObs=length(PortraitIMDS.Labels);
numObsPerClass=countEachLabel(PortraitIMDS);
%numObs
numObsPerClass
%numObsToShow=8;
classes=compose('%04d', 0:905);
classSID=zeros(1,length(classes));
for i=1:length(classes)
classSID(i)=str2num(char(classes(i)));
end % this small part would be used to make a loop over 'class' variable below.
class = "0001"; % between "0000" y "0905"
% obtain all the images in groups of 8.
idxClass = find(PortraitIMDS.Labels == class);
size(idxClass)
%numObsPerClass(str2num(size(idxClass,1))+1,2)
%idx = randsample(idxClass,numObsToShow,false);
% I DO NOT want it randomised, I want everything in order
imshow(imtile(PortraitIMDS.Files(idxClass),'GridSize',[2 4],'ThumbnailSize',[144 144]));

好的,正如代码中提到的,我不希望按类添加idxClass的随机样本。我不知道如何检索idxClass的有序数据样本,但只知道这个随机数据样本。我必须提到的是,总共有906个类,从0到905,其中的图像数量可以从0001类中的近1500个png到一些类中的零,其他类可以有40、25、16、8等。

我问这个问题是因为我不知道如何按顺序逐个类、逐个组地检索所有图像。我正在寻找的ThumbnailSize为8的组已经通过'GridSize',[2 4],'ThumbnailSize',[144 144]));获得,但我想查看所有将它们分组在2x4网格中的图像,无论它们是否来自一个类,在完成2x4网格后跳到下一个图像。我不记得总共有多少张照片,所以我确信它不会完全适合8张一组。

我认为在"类"上循环会很有用,但它不会打开所有的图像,而是使用当前设置打开每个类的前8个图像。。。(我还没有在class ="0001"上写classSID,但这就是想法(

也许这在MATLAB中是不可行的,所以我也对Python中的答案持开放态度。记住,重点是将zip文件1中的图像按顺序分组,每组8个。你知道,有序组合没有任何单一的N个元素的重复,取8乘8。

好的,所以这是一个已经通过以下代码解决的洗牌问题:

filepath='C:portrait'; % full file path (not mine)
filelist=dir(fullfile(filepath,'***.png'));
filelist = filelist(~[filelist.isdir]);
k=1
while k < size(filelist,1)+1
photo_1=strcat(filelist(k).folder,'',filelist(k).name);
k=k+1;
photo_2=strcat(filelist(k).folder,'',filelist(k).name);
k=k+1;
photo_3=strcat(filelist(k).folder,'',filelist(k).name);
k=k+1;
photo_4=strcat(filelist(k).folder,'',filelist(k).name);
k=k+1;
photo_5=strcat(filelist(k).folder,'',filelist(k).name);
k=k+1;
photo_6=strcat(filelist(k).folder,'',filelist(k).name);
k=k+1;
photo_7=strcat(filelist(k).folder,'',filelist(k).name);
k=k+1;
photo_8=strcat(filelist(k).folder,'',filelist(k).name)
fig=imtile({photo_1,photo_2,photo_3,photo_4,photo_5,photo_6,...
photo_7,photo_8},'GridSize',[2 4],'ThumbnailSize',[144 144]);
imshow(fig)
imwrite(fig,strcat('Photosfrom',num2str(k-8),'to',num2str(k-1),'.png'))
k=k+1
end

所以,是的,问题是处理图像数据,而不是图像处理本身,因为它已经解决了。。。

相关内容

  • 没有找到相关文章

最新更新