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 ExchangeInteractive Control and Callbacks についてさらに検索

タグ

タグが未入力です。

質問済み:

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