Slider listener using GUIDE
5 次查看(过去 30 天)
显示 更早的评论
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 个评论
采纳的回答
Walter Roberson
2017-5-9
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 个评论
Walter Roberson
2017-5-9
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.
更多回答(0 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Interactive Control and Callbacks 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!