Hi,
I'm experimenting with GUIDE and was wondering how to create a slider that allows the user to fix the threshold value from 0 - 255 of an image.
% --- Executes on slider movement.
function slider1_Callback(hObject, eventdata, handles)
% hObject handle to slider1 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% Hints: get(hObject,'Value') returns position of slider
% get(hObject,'Min') and get(hObject,'Max') to determine range of slider
global grayImage;
thresholdValue = uint8(get(handles.sldThreshold, 'Value'));
binaryImage= grayImage > thresholdValue;
axes(handles.axes2);

3 件のコメント

Walter Roberson
Walter Roberson 2015 年 12 月 6 日
what does get(handles.slider1, 'Max') return?
kelly123
kelly123 2015 年 12 月 6 日
It returns:
Undefined variable "handles" or function "handles.slider1".
Varian Adisuryo
Varian Adisuryo 2016 年 7 月 28 日
same here. I have the same eror. what should I do?

サインインしてコメントする。

 採用された回答

Image Analyst
Image Analyst 2015 年 12 月 6 日

0 投票

After the call to axes() in slider1_Callback, you need to call
imshow(binaryImage);

9 件のコメント

kelly123
kelly123 2015 年 12 月 6 日
I did insert that line earlier as I was tinkering around and it still hadn't worked. Is there anything else I could be missing?
This is the error I get:
Reference to non-existent field 'sldThreshold'.
Error in FinalProject>slider1_Callback (line 253) thresholdValue = uint8(get(handles.sldThreshold, 'Value'));
Error in gui_mainfcn (line 95) feval(varargin{:});
Error in FinalProject (line 42) gui_mainfcn(gui_State, varargin{:});
Error in @(hObject,eventdata)FinalProject('slider1_Callback',hObject,eventdata,guidata(hObject))
Error while evaluating uicontrol Callback
Reference to non-existent field 'sldThreshold'.
Error in FinalProject>slider1_Callback (line 253) thresholdValue = uint8(get(handles.sldThreshold, 'Value'));
Error in gui_mainfcn (line 95) feval(varargin{:});
Error in FinalProject (line 42) gui_mainfcn(gui_State, varargin{:});
Error in @(hObject,eventdata)FinalProject('slider1_Callback',hObject,eventdata,guidata(hObject))
Error while evaluating uicontrol Callback
Image Analyst
Image Analyst 2015 年 12 月 6 日
In GUIDE, you need to make the tag property of the slider "sldThreshold".
Or else (less preferred), change sldThreshold to slider1.
kelly123
kelly123 2015 年 12 月 6 日
Thank you. I changed sldThreshold to slider1, and received no errors when I ran the program. However, when I move my slider, axes2 does not change.
To see what was happening, I changed my call to axes ( handles . axes2 ) to axes1. Then, when I moved my slider, the loaded image disappeared and was replaced with a blank white axes on axes1.
Image Analyst
Image Analyst 2015 年 12 月 6 日
You don't have spaces around the dots, do you? So it's handles.axes2, not handles . axes2, right? And what do you expect to see happening? You're not doing anything with the binary image you create. Like I said originally, if you want to see the binary image you'll need to call
imshow(binaryImage);
Image Analyst
Image Analyst 2015 年 12 月 6 日
What is the value of thresholdValue?
kelly123
kelly123 2015 年 12 月 6 日
I'm not sure if I set one? Can you give me an example?
Image Analyst
Image Analyst 2015 年 12 月 6 日
After you do this:
thresholdValue = uint8(get(handles.slider1, 'Value'));
put in these lines:
sliderValue = get(handles.slider1, 'Value')
message = sprintf('\nThe slider value = %f\nThe threshold value = %f', sliderValue , thresholdValue);
uiwait(helpdlg(message));
Varian Adisuryo
Varian Adisuryo 2016 年 7 月 28 日
I just did what you told, but when I run it the slider doesn't show and it become like this: Warning: slider control can not have a Value outside of Min/Max range Control will not be rendered until all of its parameter values are valid
what should I do? please help. I've been struggling with this slider for 3 days :(
Adam
Adam 2016 年 7 月 28 日
You can set the min, max and value all in a single set command if you want e.g.
set( handles.slider1, 'Min', 0, 'Max', 10, 'Value', 5 )
to make sure that the value is always within the min to max range and avoid getting that warning. The warning is pretty self-explanatory though from the point of view of knowing what is wrong.

サインインしてコメントする。

その他の回答 (0 件)

カテゴリ

ヘルプ センター および File ExchangeCreating, Deleting, and Querying Graphics Objects についてさらに検索

タグ

タグが未入力です。

質問済み:

2015 年 12 月 6 日

コメント済み:

2016 年 7 月 28 日

Community Treasure Hunt

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

Start Hunting!

Translated by