2015-01-16 21 views
2

我已经在一个文件夹中分割了结果。这些需要在for循环中读取并在循环中进一步处理。我尝试阅读如下:如何读取MATLAB中for循环中的多重图像?

for i=1:10 
file_name=dir(strcat('C:\Users\adminp\Desktop\dinosaurs\')); 
    im=imread(strcat('C:\Users\adminp\Desktop\dinosaurs\',file_name(i).name)); 
    %processing of read image 
end 

引发错误:???错误使用==> imread at 370 无法打开文件“C:\ Users \ adminp \ Desktop \ dinosaurs \”。阅读; 您可能没有阅读权限。

请建议我哪里出了问题。

+2

现在你有答案,但我会骂,你真的应该已经知道你自己的这个解决方案;只需看一下数据,这是调试的一个重要部分?也许下一次;-) – matheburg

回答

4

我猜你的问题是:

file_name(1).name = .  % Stands for current directory 
file_name(2).name = .. % Stands for parent directory 
file_name(3).name = your_file_name.jpg 

现在,这样做:

images = dir('*JPG') 
for i=1:numel(images) 
file_name=dir(strcat('C:\Users\adminp\Desktop\dinosaurs\')); 
    im=imread(strcat('C:\Users\adminp\Desktop\dinosaurs\',images(i).name)); 
    %processing of read image 
end  
1

如果你有MATLAB的R2014b发布与计算机视觉系统工具箱,你可以在一个做到这一点行使用imageSet对象。

images = imageSet('C:\Users\adminp\Desktop\dinosaurs\'); 

将创建一个包含的路径在dinosaurs目录中的所有图像中的对象。它会自动排除任何非图像文件。

然后你就可以处理你的图片如下

for i = 1:images.Count 
    im = read(images, i); 
    % process the image 
end 
+1

注意:这必须是相当新的功能,因为我没有在2013b CVST,但无论如何,因为哦,有光泽的新东西。 – nkjt

+0

@nkjt,是的,全新的。它于2014年加入了对功能包对象类别识别的支持。 – Dima