Проблемы с отображением отредактированных изображений в графическом интерфейсе, созданном в MATLAB.
-
12-09-2019 - |
Вопрос
У меня есть задание создать графический интерфейс с помощью MATLAB GUIDE, и у меня возникла проблема с отображением отредактированного изображения.Мне нужно иметь кнопки, которые редактируют изображение (например.удалите красные, синие, зеленые компоненты и поверните) и отобразите отредактированное изображение.Я использую imshow
для отображения отредактированного изображения, но оно отображается в новом окне и закрывает графический интерфейс, который у меня был запущен.Кто-нибудь может помочь?
Я работал над этим и пробовал множество разных способов решения проблемы, но ни один из них не помог.Однако я использую MATLAB 7.0.1, а в версии 7.7.0 может быть обновление для решения этой проблемы.
Решение
Когда вы впервые строите изображение с помощью imshow
, пусть он вернет дескриптор создаваемого им объекта изображения:
A = (the initial matrix of image data);
hImage = imshow(A);
Затем, чтобы обновить изображение новыми данными, попробуйте выполнить следующее вместо вызова imshow
снова:
B = (modification of the original image matrix A);
set(hImage, 'CData', B);
Используя set
Команда изменит уже созданный вами объект изображения (список свойств объекта изображения можно найти здесь).
Альтернативно вы также можете добавить дополнительные параметры к вызову imshow
чтобы сообщить ему, в каком объекте осей строить изображение:
hAxes = (the handle to an axes object);
imshow(A, 'Parent', hAxes);
РЕДАКТИРОВАТЬ:
Чтобы решить дополнительную проблему совместного использования данных графического интерфейса между функциями, вам следует ознакомиться с документацией MATLAB. здесь.Как отмечалось там, существует несколько разных способов передачи данных между различными функциями, участвующими в графическом интерфейсе:функции вложения (упомянутые в SO здесь), используя свойство объектов UserData (упомянутое в SO здесь) или с помощью функций setappdata
/getappdata
или guidata
.А guidata
Этот вариант лучше всего подходит для использования с графическими интерфейсами, созданными в GUIDE.
Другие советы
Файловые функции GUI m автоматически присваивают данные изображения переменной с именем hObject
.После того, как вы выполнили изменение изображения, вам необходимо переназначить новые данные hObject
:
hObject = imshow(newimagedata)
Не забудьте обновить и сохранить эту операцию:
guidata(hObject, handles)