Я получаю эту ошибку:
Error in ==> APP>pushbutton2_Callback at 109
img=imread(FileName)
Когда я пытаюсь использовать FileName
в pushbutton2_Callback
, я получаю сообщение об ошибке
FileName
является переменной в pushbutton1_Callback
.
Я получаю эту ошибку:
Error in ==> APP>pushbutton2_Callback at 109
img=imread(FileName)
Когда я пытаюсь использовать FileName
в pushbutton2_Callback
, я получаю сообщение об ошибке
FileName
является переменной в pushbutton1_Callback
.
Вам нужно передать переменную FileName
из одного обратного вызова в другой. Для этого вы можете присвоить переменную 'UserData'
полю pushbutton1
. Ваш код под pushbutton1_Callback
должен выглядеть примерно так:
FileName=uigetfile();
set(handles.pushbutton1,'UserData',FileName);
Далее вам нужно прочитать переменную под вашим pushbutton2_Callback
:
FileName=get(handles.pushbutton1,'UserData');
img=imread(FileName);
Если вы хотите проверить свои результаты, вы всегда можете не ставить точки с запятой в конце строк.
Существует общий метод хранения данных с вашим графическим интерфейсом для использования между обратными вызовами. Вы можете добавить произвольные поля в объект handles, чтобы вы могли добавить обратный вызов pushbutton1
handles.filename = FileName;
guidata(hObject,handles);
Вторая строка представляет собой шаблонный код, который необходимо поместить в конце любого обратного вызова, который изменяет значения в структуре дескрипторов.
Теперь все ваши обратные вызовы будут иметь доступ к имени файла. В вашем конкретном случае при обратном вызове 2 у вас будет
img = imread(handles.filename);
Конечно, вы можете захотеть использовать это изображение позже в другой функции, чтобы вы могли сохранить его и в дескрипторах.
handles.img = img;
guidata(hObject, handles);