Slider listener using GUIDE
1 Ansicht (letzte 30 Tage)
Ältere Kommentare anzeigen
Dawn
am 9 Mai 2017
Kommentiert: Walter Roberson
am 9 Mai 2017
I need to update the variable frame2display dynamically. But the following code isnt working. How should I modify it? I would like to stick with using GUIDE. Thanks.
function getMCavi_Callback(hObject, eventdata, handles)
handles = guidata(hObject);
[fname,~,~] = uigetfile('*.avi*','Select the motion stablized .avi video',pwd);
VidObj_stbl = VideoReader(fname);
nframes_all=round((VidObj_stbl.Duration)/(1/VidObj_stbl.FrameRate));
for m=1:nframes_all
temp=(readFrame(VidObj_stbl,'native'));
imframes_all(:,:,m)=temp(:,:,1);
end;
imframes_all = double(imframes_all);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%confusing portion %%%%%%%%%%%%%%%%%%%%%%%%%%%
handles.slider_value = addlistener(handles.slider_frameNum,'Value', 'PostSet', ...
@(hObject,eventdata)test2('slider_frameNum_Callback',hObject,eventdata,guidata(hObject)));
slider_value = handles.slider_value;
display(slider_value);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
frame2display = slider_value;
if frame2display == 0
frame2display = 1;
end
img = squeeze(imframes_all(:,:,frame2display));
imagesc(img, 'Parent', handles.MCimages); axis equal tight off; colormap gray
guidata(hObject,handles)
% --- Executes on slider movement.
function slider_frameNum_Callback(hObject, eventdata, handles)
handles = guidata(hObject);
slider_value = get(hObject,'Value');
handles.slider_value = slider_value;
guidata(hObject,handles)
0 Kommentare
Akzeptierte Antwort
Walter Roberson
am 9 Mai 2017
I would not use addlistner for that. I would use the normal Callback property of the uicontrol('style', 'slider')
You should save imframes_all somewhere, and the Callback for the slider should extract the fetch slider value, pull out the corresponding frame from imframes_all, and image() or imshow() it into the appropriate axes. You would initialize the slider value and call the Callback "manually" to get the process going.
4 Kommentare
Walter Roberson
am 9 Mai 2017
Personally I never use addlistener when an existing interface handles the situation. addlistener feels too "backdoor" to me, and it is not at all transparent as to what will happen in any given situation, since a wide variety of different code might have registered listeners for an event.
Weitere Antworten (0)
Siehe auch
Kategorien
Mehr zu Interactive Control and Callbacks finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!