2013-05-29 2 views
0

У меня есть фрагмент кода длиной 300 строк. Существует 3 разных экземпляра imshow во всем коде, который отображает цифры по мере запуска кода. Создаваемый мной GUI будет очень простым. В настоящее время у меня есть кнопка, которая инициирует файл m. Я пытаюсь получить изображения, которые будут отображаться в графическом интерфейсе, который я создаю, а не в отдельных окнах Figure. Я ищу учебники онлайн, но не могу быстро исправить мою проблему, все они немного запутаны, и я не могу понять, что именно делать.Отображение изображений «imshow» в графическом интерфейсе с помощью GUIDE

У меня 3 оси вставлены в графический интерфейс. В «обратных вызовах просмотра» для каждой оси я могу создать fcn, deletefcn и buttonDownFcn. Когда я создаюFcn, он дает мне подсказку «поместить код в окне открытияFcn для заполнения осей1» в автоматически сгенерированном коде.

Я пытался это сделать, но я не могу найти нужное место для написания кода.

Может ли кто-нибудь сказать мне, если я пойду в правильном направлении или если у меня это будет неправильно.

Благодаря

+0

Как насчет 'img = imread ('peppers.jpg'); image (img, 'Parent', handleles.axes1); '? – wakjah

+0

Спасибо за ответ, это просто дает мне ошибку, когда я вставить, что: «Ошибка при оценке UIControl CallBack неопределенной переменной„ручка“или функции„handles.axes4“ Ошибки в FullProgram (строка 37) . imshow (Изображение); Изображение (Изображение, «Родитель», обрабатывает.axes4) Ошибка при оценке uicontrol Обратный звонок « – Navack

ответ

1

Если я понимаю правильно, вы просто хотите, чтобы ваши изображения появляются в осях вместо фигуры. Попробуйте установить фокус на оси, прежде чем показывать изображение.

axes(1);%you may need to change the one to your axes handle. 
    imagesc(imageToBeDisplayed); 

    axes(2); 
    imagesc(secondImage); 

    axes(3); 
    imagesc(thirdImage); 

Этот способ, прежде чем вызывать imagesc, убедитесь, что ваша программа знает, куда отправить изображение. В противном случае он может просто создать фигуру.

2

Для отображения этих изображений вам необходимо объявить родителя в imshow. Родитель - это то, что вы хотите действовать как холст для своего изображения, и в вашем случае будет axes.

Я создал очень простой gui с тремя осями и кнопкой. MATLAB назвал мои оси axes1, axes2 и axes3. Руководство сохраняет рукоятки этих осей, чтобы вы могли взаимодействовать с ними во всем коде gui. Например, вы упомянули функцию открытия ... вот мой с вызовом imshow (только линии, которые я добавил были последние три из них):

% --- Executes just before myGUI is made visible. 
function myGUI_OpeningFcn(hObject, eventdata, handles, varargin) 

% Choose default command line output for myGUI 
handles.output = hObject; 

% Update handles structure 
guidata(hObject, handles); 

% UIWAIT makes myGUI wait for user response (see UIRESUME) 
% uiwait(handles.figure1); 
imshow('myImage1.png', 'Parent', handles.axes1) 
imshow('myImage2.png', 'Parent', handles.axes2) 
imshow('myImage3.png', 'Parent', handles.axes3) 

Обратите внимание, что я могу взять ручки моих осей и затем объявите их родителями для результатов моего звонка imshow.

Если вы не знаете, какие имена ваших дескрипторов, вы можете проверить редактор графического интерфейса, щелкнув правой кнопкой мыши, посмотрев на инспектора свойств и на свойство tag.

Если вы хотите выполнить аналогичную операцию, когда вы нажимаете на кнопку, щелкните правой кнопкой мыши на кнопке в редакторе и нажмите «Просмотреть обратные вызовы» -> «Обратный звонок», и вы можете добавить свой код imshow.

Удачи.

+0

Это отличное объяснение, я все это задал. Это дает мне ошибку, потому что мой вывод imshow - imshow (Image); Как я могу получить GUI для« Image » а не что-то вроде «myImage1.png», как вы подробно описали выше – Navack

+0

Как пользователь, как создается переменная изображения? – Huguenot

+0

Это результат imread ('sampleImage.jpg'); После фильтрации и преобразования выполняются. – Navack

Смежные вопросы