2016-02-04 68 views
0

目前我正在一個項目中,我需要一次讀取9個圖像,並顯示他們9軸與MATLAB gui。 我試過一些代碼,但它不起作用。如何讀取和顯示軸上的多個圖像gui matlab

[file,folder,FilterIndex] = uigetfile('*.*','MultiSelect','on'); 

handles.img=cell(1,length(file)); 

for ifile = 1:length(file) 
    filename=fullfile(folder,file(ifile).name); 
    image=imread(filename); 
    axes(handles.axes{ifile}); 
    imshow(image); 
    handles.img{ifile}=image 

end 

這是錯誤消息:

??? Improper index matrix reference. 

Error in ==> guikedelaizulfa>open_Callback at 1098 
    filename=fullfile(folder,file(ifile).name); 

Error in ==> gui_mainfcn at 96 
     feval(varargin{:}); 

Error in ==> guikedelaizulfa at 42 
    gui_mainfcn(gui_State, varargin{:}); 

Error in ==> 
@(hObject,eventdata)guikedelaizulfa('open_Callback',hObject,eventdata,guidata(hObject)) 


??? Error while evaluating uicontrol Callback 

謝謝您的幫助

+1

請參閱'help uigetfile',您將看到該文件不是像您的代碼 – matlabgui

+1

那樣的結構:不要使用'image'作爲變量的名稱,因爲它的內置函數 –

+0

我試過重寫uigetfile命令並將圖像更改爲img,但我仍然收到相同的錯誤消息。我該怎麼辦? –

回答

0

的問題是,你正在使用的uigetfile輸出就好像它是一樣的輸出dir。的uigetfile輸出僅僅是

[files, folder, filterIndex] = uigetfile('*.*','MultiSelect','on'); 

如果你看一下文件的價值,你會看到它是文件名的一個單元陣列和像你這樣的結構被處理了。

disp(files) 

如果我們的工作,到當前的代碼:

[files, folder, filterIndex] = uigetfile('*.*','MultiSelect','on'); 

handles.img = cell(1, numel(files)); 

for ifile = 1:numel(files) 
    filename = fullfile(folder, files{ifile}); 
    img = imread(filename); 
    imshow(img, 'Parent', handles.axes{ifile}); 
    handles.img{ifile} = img; 
end 

在你的情況下,你不必軸手柄,但只有軸標籤,你可以做循環內的以下

ax = findall(gcf, 'type', 'axes', 'tag', sprintf('axes%d', ifile)); 
imshow(img, 'Parent', ax); 
+0

謝謝! 我試過了你的建議,但是我仍然收到錯誤信息 –

+0

???評估uicontrol時出錯回撥 ???來自非單元陣列的單元格內容引用對象。 錯誤在==> guikedelaizulfa> open_Callback在1098 filename = fullfile(folder,files {ifile}); –

+0

糟糕,抱歉,我輸出的順序不對。現在更新回答@ZulfaLuthfi – Suever

相關問題