Slider listener using GUIDE
1 visualización (últimos 30 días)
Mostrar comentarios más antiguos
Dawn
el 9 de Mayo de 2017
Comentada: Walter Roberson
el 9 de Mayo de 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 comentarios
Respuesta aceptada
Walter Roberson
el 9 de Mayo de 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 comentarios
Walter Roberson
el 9 de Mayo de 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.
Más respuestas (0)
Ver también
Categorías
Más información sobre Interactive Control and Callbacks en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!