Mám súbor ZIP s 10 000 obrázkami 32 x 32. Chcem vytvoriť maticu, kde každý stĺpec zodpovedá maticovému znázorneniu tohto obrázka vo vektorovej podobe.
Napríklad, ak U je moja konečná matica, stĺpec 1 U bude mať 1024 hodnôt a príkaz
imagesc(reshape(U(:,1),32,32))
dám prvý obrázok.
Vďaka!
odpovede:
0 pre odpoveď č. 1Musíte sa postarať o počet kanálov. Za predpokladu, že máte súbory RGB, potom bude fungovať niečo ako nasledujúce.
U = zeros(1024, 10000, 3, "uint8");
for idx = 1:10000
filename = sprintf("file_%06d.png", idx);
data = imread(filename);
U(:,idx,:) = reshape(data,[],1,3);
end
Potom musíte napísať
imagesc(reshape(U(:,1,:),32,32,3))
Ďalšou možnosťou je vyhnúť sa pretváraniu pomocou 4-D poľa:
U = zeros(32, 32, 3, 10000, "uint8");
for idx = 1:10000
filename = sprintf("file_%06d.png", idx);
U(:,:,:,idx) = imread(filename);
end
imagesc(U(:,:,:,1))