2013-06-19 3 views
0

Итак, я недавно создал графический интерфейс, предназначенный для выполнения базовой обработки изображений. Он используетПередача новой строки через GUI matlab

[filename, pathname] = ... 
    uigetfile({'*.m';'*.mdl';'*.mat';'*.*'},'File Selector'); 

set(handles.Textbox1, 'string', fullfile(pathname,filename)); 

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

Позвольте мне немного пояснить, что на моем гие есть 6 кнопок, каждая из которых предназначена для предварительной обработки некоторой функции на изображении, такой как фильтрация фильтров/лаплайцев и т. Д., И одна кнопка, которая добавляет шум. После нажатия кнопки изображение появляется с желаемым эффектом на изображении. Что бы я хотел сделать, это нажать кнопку «добавить шум», чтобы графический интерфейс использовал новое изображение для дальнейшей обработки изображений. Например, если бы я щелкнул, добавьте шум, значит, фильтрация прямо сейчас, графический интерфейс будет выплевывать два изображения: один с шумом, один средний отфильтрованный. Моя цель состоит в том, чтобы графический интерфейс вместо этого выполнял среднюю фильтрацию на изображении, заполненном шумом.

Я попытался добавить следующее к функции «Addnoise», которую я написал, но ничего не происходит.

saveas(myimage, 'photonoise.raw'); 

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

[filename, pathname] = ... 
    uigetfile({'*.m';'*.mdl';'*.mat';'*.*'},'File Selector'); 

set(handles.Textbox1, 'string', fullfile(pathname,filename)); 

снова. Спасибо, спасибо.

ответ

2

Используйте Handles struct в своих интересах и сохраните данные изображения в своих ручках.

handles.currentImage=imread(get(handles.textbox1,'string')); %This reads in an image 

handles.currentImage=yourOperation(handles.currentImage) % Modify your image and save back 

figure(1) %This keeps everything popping up in 1 figure, 
%if you dont want that, remove the "(1)" 

imshow(handles.currentImage) %show current image 
+0

И использовать imwrite, чтобы сохранить изображения, сделать «помочь imwrite», чтобы выяснить, как использовать его – Shaun314

+0

я сделал то, что вы сказали, но как я могу обновить строку в моем текстовом поле к тому, что новому образу ? Строка не изменяется. – user2475404

+0

Вам больше не нужно. Строка просто представляет имя файла изображения. imread читает на изображении, поэтому имя файла больше не важно. Имя файла не изменится. Мы используем фактические данные из изображения (хранящиеся в handles.currentImage), поэтому имя файла больше ничего не делает. Если я неправильно истолковал ваш вопрос, ответ будет думать о том, как вы устанавливаете эту строку текстового поля в первую очередь ... Теперь, как вы думаете, вы бы установили его снова? ;) – Shaun314

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