2015-10-12 66 views
-1

我正在嘗試創建一個圖像數據序列。但是,當我運行下面的代碼時,它不顯示任何錯誤,但是當我查看我創建的圖像數據時,僅存儲我引用的文件夾中圖像序列中的最後一幅圖像。如何處理一系列圖像?

當我驗證此圖像數據的變量細節時,它只顯示最後一張圖像。共有8張圖片,只顯示最後或第8張圖片。我究竟做錯了什麼?

clc; clear all; close all; 
% Create an image filename, and read it in to a variable called manosData. 

for k= 1:8 
    jpgFileName = strcat('image', num2str(k),'.jpg'); 

    if exist(jpgFileName, 'file') 
     manosData = imread(jpgFileName); 
    else 
     fprintf('File %s does not exist.\n', jpgFileName); 
    end  
end 

%%%and then save manosData 

回答

1

這是因爲你的循環只保存最後的圖像。 manosData只會記住您讀入的最後一張圖像,因爲它會一直被覆蓋。我不知道你的圖像是彩色的還是灰度和我不知道如果每個圖像的分辨率相同,所以我會建議你使用電池陣列來處理這個在您的圖像閱讀:

manosData = {}; %// Cell array 
for k= 1:8  
    jpgFileName = strcat('image', num2str(k),'.jpg'); 

    if exist(jpgFileName, 'file') 
     manosData = [manosData imread(jpgFileName)]; %// Add image to cell array if possible  
    else 
     fprintf('File %s does not exist.\n', jpgFileName); 
    end  
end 

%%%and then save manosData 

然後您可以通過manosData{k}訪問任何圖像,其中k是圖像索引。作爲一個例子,如果你想顯示第四個圖像,你會做​​

+0

嗨。圖像分辨率不一樣,而且是彩色圖像。我試過你的程序,它的工作原理,但當我嘗試訪問manosData,處理所有的圖像,它給了我一個錯誤。 (3,3),j) dog1 = reshape(image(:,j),64,64); imshow(dog1) end –

+0

什麼是「圖像」? – rayryeng

+0

圖像是所有圖像的基本名稱,例如image1.jpg,image2.jpg等。 –