我試了下面的程序來閱讀多個圖像(約300張圖片)。現在我想要將這些圖像立即以某種名稱讀取到某個位置後存儲爲g1
,g2
, g3
...可以在循環中執行此操作嗎? 這裏是我的嘗試:如何在for循環中讀取圖像後立即存儲圖像?
for i=1:5
m=imread(['C:\Users\shree\Desktop\1\im' num2str(i) '.jpg']);
figure,imshow(m);
end
我試了下面的程序來閱讀多個圖像(約300張圖片)。現在我想要將這些圖像立即以某種名稱讀取到某個位置後存儲爲g1
,g2
, g3
...可以在循環中執行此操作嗎? 這裏是我的嘗試:如何在for循環中讀取圖像後立即存儲圖像?
for i=1:5
m=imread(['C:\Users\shree\Desktop\1\im' num2str(i) '.jpg']);
figure,imshow(m);
end
試試這個 -
for i=1:5
img =imread(['C:\Users\shree\Desktop\1\im' num2str(i) '.jpg']);
evalc(['g' num2str(i) '=img;']);
end
figure,imshow(g1);
figure,imshow(g2);
另一種方法可以是使用STRUCT及這些圖像存儲爲一個結構的領域。
作爲一個4D矩陣存儲是herohuyongtao建議的另一種有效方法。
您可以將所有這些只需保存成一個大的矩陣:
for i=1:5
images_all(:, :, :, i) = imread(['C:\Users\shree\Desktop\1\im' num2str(i) '.jpg'])
end
在此之後,所有的圖像將被存儲在images_all
(這裏假定所有的圖像是彩色圖像,即3個信道)。
我試過這個,但它顯示以下錯誤,下標賦值尺寸不匹配。 錯誤在==> p1在16 images_all(:,:,:,i)= imread(['C:\ Users \ shree \ Desktop \ 1 \ im'num2str(i) '.jpg']) – arch
@ user3387228您的圖像灰度? – herohuyongtao
並非所有圖像都是彩色的(RGB形式) – arch
我強烈建議您將它們存儲在單元陣列:
for k=1:5
image_path = ['C:\Users\shree\Desktop\1\im' num2str(i) '.jpg']; %// I have moved this to be on its own line as it will make debugging easier. You don't have to, but I think it's a good idea.
images_all{k} = imread(image_path);
end
通過使用eval
創建變量的名字,如g1
,g2
等你污染你的工作空間的變量難以管理的數量。此外,如果它們都在單元陣列中,那麼在循環中或使用cellfun
將相同的功能應用於它們中的每一個都非常簡單。
例如,如果你想轉換他們現在都爲灰度:
images_grey = cellfun(@rgb2gray, images_all, 'UniformOutput', false);
heyy感謝,它的工作,但我不能訪問這些圖片ex.if我想讀的G1再次然後我該怎麼辦這個??? – arch
稍後在代碼中你可以訪問g1,g2,g3..etc。所以,循環結束後,嘗試imshow(g1);.相應地編輯我的代碼。 – Divakar
非常感謝.... :) – arch