MATLAB Answers

Displaying an image on UIAxes in App Designer that doesn't appear

2 ビュー (過去 30 日間)
Ahmed Mukhtar
Ahmed Mukhtar 2021 年 5 月 13 日
コメント済み: Ahmed Mukhtar 2021 年 5 月 14 日
Hey there,
I've been trying to design a GUI in the app designer that estimates noise, it:
  1. Takes an image specified by the user, image appears on UIAxes2
  2. User selects a type of noise to add
  3. Image with noise added is displayed again on UIAxes2
Please advise.
The original selected image appears just fine but when I want the noisy image to appear, it doesn't. Here are screenshots of the code + the App
  1. Original Image button callback code
function UploadImageButtonPushed(app, event)
[filename,filepath] = uigetfile({ '*.*;*.jpg;*.png;*.bmp;*.oct' }, 'Select File to Open');
fullname = [filepath, filename];
file = imread(fullname);
global pic
imshow(image1, 'parent', app.UIAxes2)
2. Noisy image button callback code
% Button pushed function: ApplyNoiseButton
function ApplyNoiseButtonPushed(app, event)
global image1
global noisy
if (strcmp(app.SelectTypeofNoisetoAddDropDown.Value,'Salt & Pepper'))
noisy = imnoise(image1, 'salt & pepper');
elseif(strcmp(app.SelectTypeofNoisetoAddDropDown.Value, 'Gaussian'))
noisy = imnoise(image1, 'gaussian', 0, 0.01);
noisy = imnoise(image1, 'speckle');
imshow(noisy,'parent', app.UIAxes2)
Screenshots of GUI:


Geoff Hayes
Geoff Hayes 2021 年 5 月 14 日
Ahmed - I suspect the problem is with your variable for image1. It is declared as a global variable in ApplyNoiseButtonPushed function, but it is a local variable in the UploadImageButtonPushed function. I suppose that you could use pic instead or find an alternative to using global variables. Perhaps save the image as a property to the app object.
  1 件のコメント
Ahmed Mukhtar
Ahmed Mukhtar 2021 年 5 月 14 日
I globalized image1 and the entire app worked, thank you very much!


その他の回答 (0 件)

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by