在Matlab中读取图像权限

时间:2016-06-23 10:59:07

标签: matlab

我试图在matlab界面中访问图像 我的代码如下:

global  im2 im  
axes(handles.axes4); 

[path1, user_cance]= imgetfile();
if user_cance 
    msgbox(sprintf('Error'), 'Error', 'Error'); 

    return
end

srcFiles = dir('C:\Users\User\Desktop\images test\yale faces\yalefaces\..');    
 % yale faces is the database folder 

for i = 1 : length(srcFiles)
    file_name=dir(strcat('C:\Users\User\Desktop\images test\yale faces\yalefaces')); 

  im2=imread(strcat('C:\Users\User\Desktop\images test\yale faces\yalefaces',file_name(i).name));  
    %processing of read image

end

问题是当我运行代码时,它会出现以下错误:

  

无法打开文件" C:\ Users \ User \ Desktop \ images \ test \ yale faces \ yalefaces"对于   读;   你可能没有阅读权限。

有谁知道如何解决这个问题?

1 个答案:

答案 0 :(得分:4)

当您执行目录列表(没有任何通配符)时,您将获得当前目录'.'和父目录以及'..'。您无法读取这些文件,因为它们是目录。在尝试使用imread读取目录之前,您需要过滤掉目录。

files = dir('C:\Users\User\Desktop\images test\yale faces\yalefaces'); 

% Remove directories
files = files(~[files.isdir]);

作为旁注,很难说出你的代码在做什么,但我很确定它没有做你希望的事情。

您似乎想要获取数据库中的所有图像。如果是这样,你会想要做类似的事情。

folder = 'C:\Users\User\Desktop\images test\yale faces\yalefaces';

% Get a list of all files in this folder
files = dir(folder);
files = files(~[files.isdir]);

for k = 1:numel(files)
    % Append the folder with the filename to get the path and load
    im2 = imread(fullfile(folder, files(k).name));
end

我强烈建议不要使用strcat来构造文件路径,特别是因为它会从每个输入中删除可能损坏文件名的尾随/前导空格。 fullfile就是为此设计的,所以请使用它。