我目前正在嘗試編寫一個具有兩個主要功能的GUI。首先,它應該能夠加載一堆圖像(有192個192×256灰度圖像),並通過移動滑塊使其可瀏覽。其次,無論什麼時候我點擊它應該存儲圖像的[x,y]座標。設計一個GUI來檢查MatLab中的MRI堆棧
我以爲我很好地理解了GUI如何與代碼交互,但是編寫回調函數非常混亂(這是我第一次這樣做)。我的印象是回調函數是內聯定義的。但是,每當我這樣做時,我都會收到一條錯誤消息,告訴我:「錯誤:在此上下文中不允許使用函數定義。」
以下是我的代碼。
firstSlice = 1;
lastSlice = size(DicomImages,1);
h = figure('Toolbar', 'none',...
'Menubar', 'none',...
'Name', 'Slice Inspector',...
'NumberTitle','off',...
'IntegerHandle','off');
SliceSelector = uicontrol(h, 'Style', 'slider',...
'Callback', @LoadNewImage);
set(SliceSelector, 'Value',firstSlice);
set(SliceSelector, 'Max', lastSlice);
set(SliceSelector, 'Min', firstSlice);
slice = get(SliceSelector, 'Value');
displayImage = imshow(DicomImages{1,firstSlice});
pixInfo = impixelinfo(displayImage);
set(displayImage,'ButtonDownFcn',@coordInfo);
function LoadNewImage(SliceSelector, eventdata, handles)
slice = round(get(SliceSelector, 'Value'));
imshow(DicomImages{1,slice});
end
function coordInfo(cursor, eventdata, handles)
[x, y] = ginput(1);
end
當我運行它時,我收到上面發佈的錯誤消息。任何幫助/建議將受到歡迎。
對不起。對我的監督。但是,當我運行代碼(現在在其他文件中的功能),我仍然得到相同的錯誤。以下是我的兩個功能。 'function [] = LoadNewImage(SliceSelector,eventdata) slice = round(get(SliceSelector,'Value')); imshow(DicomImages {1,slice}); end' 'function [x,y] = coordInfo(cursor,eventdata) [x,y] = ginput(1); end' – odnanreh12 2014-09-25 16:32:21
好吧,我明白了。你能看到哪條線產生錯誤嗎?它應該在發佈的消息中。 – Jorge 2014-09-25 22:37:15
使用您的第一個建議解決問題後發現問題全部解決。這麼晚纔回復很抱歉。 – odnanreh12 2014-10-02 20:58:01