我不知道如何開始,而是通過共享“檔案夾”結構及其元素。它們是:Google Drive 指向 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('d', 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 的 randsample。我不知道如何檢索 idxClass 的有序資料樣本,但只有這個隨機的資料樣本。我必須提到,總共有 906 個類,從 0 到 905,其中的影像數量可以從僅 0001 類中的大量近 1500 個 png 到某些類中沒有,而其他類可以有 40、25 , 16, 8 等
我問這個問題是因為我不知道如何按順序檢索所有影像 Class by Class,group by group。我正在尋找的帶有 ThumbnailSize 的 8 組已經通過 獲得'GridSize',[2 4],'ThumbnailSize',[144 144]));,但我想查看所有將它們分組為 2x4 網格的影像,無論它們是否來自一個類,完成 2x4 后跳轉到下一個影像網格。我不記得總共有多少張圖片,所以我確信它不會完全適合 8 組。
我認為“類”上的回圈會很有用,但它不會打開所有影像,而是使用當前設定打開每個類的前 8 個影像......(我還沒有寫上 classSID class ="0001",但是這就是想法)
也許這對 MATLAB 來說是不可行的,所以我也愿意接受 Python 中的答案。請記住,關鍵是將1中的 zip 影像分組為 8 個有序組。您知道,沒有任何單個重復 N 個元素的有序組合以 8 乘 8 的形式排列。
uj5u.com熱心網友回復:
好的,所以這是一個已經通過以下代碼解決的洗牌問題:
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
所以是的,問題是處理影像資料,而不是影像處理本身,因為它已經解決了......
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/505854.html
下一篇:如何回圈通過索引符號Matlab
