Проблемы с отображением отредактированных изображений в графическом интерфейсе, созданном в MATLAB.

StackOverflow https://stackoverflow.com/questions/768510

Вопрос

У меня есть задание создать графический интерфейс с помощью 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 или guidataguidata Этот вариант лучше всего подходит для использования с графическими интерфейсами, созданными в GUIDE.

Другие советы

Файловые функции GUI m автоматически присваивают данные изображения переменной с именем hObject.После того, как вы выполнили изменение изображения, вам необходимо переназначить новые данные hObject:

hObject = imshow(newimagedata)

Не забудьте обновить и сохранить эту операцию:

guidata(hObject, handles)
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top