Проблемы с отображением отредактированных изображений в графическом интерфейсе, созданном в MATLAB - PullRequest
3 голосов
/ 20 апреля 2009

У меня есть задание на создание GUI с использованием MATLAB GUIDE, и у меня возникла проблема с отображением отредактированного изображения. Мне нужно иметь кнопки, которые редактируют изображение (например, удаляют красные, синие, зеленые компоненты и поворачивают) и отображают это отредактированное изображение. Я использую imshow для отображения отредактированного изображения, но оно отображается в новом окне и закрывает графический интерфейс, который у меня был. Кто-нибудь может помочь?

Я работал над этим и пробовал множество различных способов решения проблемы, но ни один не помог. Однако я использую MATLAB 7.0.1, и 7.7.0 может иметь обновление для этой проблемы.

Ответы [ 2 ]

4 голосов
/ 20 апреля 2009

Когда вы впервые строите изображение с помощью 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);

EDIT:

Для решения вашей дополнительной проблемы обмена данными графического интерфейса между функциями вам следует обратиться к документации MATLAB здесь . Как уже отмечалось, существует несколько различных способов передачи данных между различными функциями, включенными в графический интерфейс: функции вложения (упомянутые в SO здесь ) с использованием свойства объектов UserData (упомянутое в SO здесь ), или используя функции setappdata / getappdata или guidata. Параметр guidata может быть наилучшим для использования с графическими интерфейсами, созданными в GUIDE.

0 голосов
/ 22 апреля 2009

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

hObject = imshow(newimagedata)

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

guidata(hObject, handles)
...