所以我最近创建了一个用于执行一些基本图像处理的GUI。它使用
[filename, pathname] = ...
uigetfile({'*.m';'*.mdl';'*.mat';'*.*'},'File Selector');
set(handles.Textbox1, 'string', fullfile(pathname,filename));
获取文件名,然后将其放在GUI的文本框中以供其他功能使用。我有一个噪音功能,旨在为输入的图片添加噪音,但我似乎无法弄清楚如何让GUI使用新创建的噪音照片为其余的过滤器。
让我解释一下,我的gui上有6个按钮,每个按钮用于在图片上执行某些功能,例如平均过滤/拉普拉斯过滤等,以及一个增加噪音的按钮。单击按钮后,会弹出一个图形,并在图像上显示所需的效果。我想要做的是,在点击“添加噪音”按钮后,让GUI使用新图片进行任何进一步的图像处理。例如,如果我点击添加噪音,然后立即过滤,GUI将吐出两个图像,一个有噪音,一个意味着过滤。我的目标是让GUI在噪声填充图片上预先形成均值滤波。
我试图将以下内容添加到我编写的“Addnoise”函数中,但没有任何反应。
saveas(myimage, 'photonoise.raw');
保存图像后,我需要将新图像的字符串传递回原始程序,以便进行处理,但不确定如何保存,并打开字符串。我希望如果点击addnoise按钮后,只需更换旧字符串,而无需重新打开文件浏览器并选择新图像,所以我不想使用
[filename, pathname] = ...
uigetfile({'*.m';'*.mdl';'*.mat';'*.*'},'File Selector');
set(handles.Textbox1, 'string', fullfile(pathname,filename));
一次。非常感谢协助,谢谢。
答案 0 :(得分:2)
使用Handles结构,并将图像数据保存到句柄中。
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