2015-10-12 26 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等。 –