我试图在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"对于 读; 你可能没有阅读权限。
有谁知道如何解决这个问题?
答案 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
就是为此设计的,所以请使用它。