2014-03-07 88 views
1

我試了下面的程序來閱讀多個圖像(約300張圖片)。現在我想要將這些圖像立即以某種名稱讀取到某個位置後存儲爲g1,g2, g3 ...可以在循環中執行此操作嗎? 這裏是我的嘗試:如何在for循環中讀取圖像後立即存儲圖像?

for i=1:5 
    m=imread(['C:\Users\shree\Desktop\1\im' num2str(i) '.jpg']); 
    figure,imshow(m); 
end 

回答

0

試試這個 -

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建議的另一種有效方法。

+0

heyy感謝,它的工作,但我不能訪問這些圖片ex.if我想讀的G1再次然後我該怎麼辦這個??? – arch

+0

稍後在代碼中你可以訪問g1,g2,g3..etc。所以,循環結束後,嘗試imshow(g1);.相應地編輯我的代碼。 – Divakar

+0

非常感謝.... :) – arch

0

您可以將所有這些只需保存成一個大的矩陣:

for i=1:5 
    images_all(:, :, :, i) = imread(['C:\Users\shree\Desktop\1\im' num2str(i) '.jpg']) 
end 

在此之後,所有的圖像將被存儲在images_all(這裏假定所有的圖像是彩色圖像,即3個信道)。

+0

我試過這個,但它顯示以下錯誤,下標賦值尺寸不匹配。 錯誤在==> p1在16 images_all(:,:,:,i)= imread(['C:\ Users \ shree \ Desktop \ 1 \ im'num2str(i) '.jpg']) – arch

+1

@ user3387228您的圖像灰度? – herohuyongtao

+0

並非所有圖像都是彩色的(RGB形式) – arch

1

我強烈建議您將它們存儲在單元陣列:

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創建變量的名字,如g1g2等你污染你的工作空間的變量難以管理的數量。此外,如果它們都在單元陣列中,那麼在循環中或使用cellfun將相同的功能應用於它們中的每一個都非常簡單。

例如,如果你想轉換他們現在都爲灰度:

images_grey = cellfun(@rgb2gray, images_all, 'UniformOutput', false); 
+1

此外,您可以存儲不同大小的圖像。如果您使用的是四維矩陣,則無法完成。 –

+0

嘿謝謝,我相應地修改了我的代碼,現在我再次陷入困境:(我想調整所有這些灰度圖像並存儲這些調整大小的圖像與一些名稱爲r1,r2 ...我該怎麼做..請做幫助我... – arch

+0

@arch你可以提供一些代碼演示如何調整一個圖像的尺寸請 – Dan