2016-06-23 3 views
0

을에서 이미지 읽기 권한을 다음과 같이 내 코드는 다음과 같습니다내가 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 

문제가 내가 코드를 실행하면 다음과 같은 오류를 제공한다는 것입니다 :

Can't open file "C:\Users\User\Desktop\images test\yale faces\yalefaces" for reading; you may not have read permission.

누구든지이 문제를 해결하는 방법을 알고 있습니까?

+0

'im2'의 출력은 무엇입니까? 마지막'strcat' 호출에서 백 슬래시를 잊었습니까? – bushmills

+0

여기서 im2는 이미지를 읽을 때 사용합니다 (인터페이스가 두 축으로 구성되어 있기 때문에 이전에 동일한 목적으로 사용했습니다) – user5648890

+0

질문에 대답하지 않지만 나중에 도움이 될 수있는 두 가지 사항 : 피하십시오 (Matlab에서 거의 모든 상황에서 나쁜 습관으로 간주되는) 전역 변수를 사용하는 경우 항상'fullfile'을 사용하여 ('strcat'보다는) 파일 경로를 만드십시오. –

답변

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 

I 높게는 각 입력 손상 될 수 파일명의 선행/후행 공백을 제거하기 때문에, 특히 파일 경로를 구성하는 데 사용 strcat을 억제. fullfile 정확히 이것을 위해 설계되었습니다 그래서 그것을 사용하십시오.

+1

이것이 문제라는 것을 확인하기 위해'dbstop if error'를 사용하여 코드를 실행하고'file_name (i) .name'을 검사 할 수 있습니다. –

+0

Suever 님이 늦게 답변드립니다. 고맙습니다. 당신의 도움에 대해, 나는 그것에 대해 더 많이 이해하기 시작했습니다. 그냥 묻는다면, 당신이 제공 한 코드를 그대로 사용할 수 있습니까? (루핑 시퀀스로 이미지를 가져 오는 것)? – user5648890

관련 문제