我有一个带轴和按钮的gui,当我按下按钮时,视频应该在轴图中播放..我已经编写了这段代码,但它没有被执行,也没有显示任何错误..任何人都可以帮助我..
function pushbutton1_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton1 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
handles=guidata(hObject);
mov=VideoReader('VileParle.mp4');
nFrames=mov.NumberOfFrames;
for i=1:nFrames
img=read(mov,i);
imshow(img,[]);
end
guidata(hObject,handles)
答案 0 :(得分:0)
您必须将视频与正确的绘图区域连接起来。 我编写的解决方案适用于FOR循环中的正常情节(未尝试使用真实视频)
首先,你在matlab GUI中为你绘制区域的名称(句柄)是什么?我把它命名为轴1.
其次,我把这个剧情写成了一个由按钮调用的.m文件中的外部函数,而不是按钮本身的一个函数(考虑这个选项,但我认为它可以在回调中完成)
第三,保存在文件中的外部函数代码 display_function.m
function [Output1, Output2] = display_function(mov, nFrames, axes1, handles )
%output are optional in this case
hg = hgtransform('parent', axes1);
for i=1:nFrames
img=read(mov,i);
Frame(i) = imshow(img,[]); %plot the frame as an object
set(Frame(i),'Parent',hg);
drawnow
pause(0.001);
if (i>1)
delete(Frame(i-1));
end
end
按钮中的功能应该像那样调用
function pushbutton1_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton1 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
handles.mov=VideoReader('VileParle.mp4');
handles.nFrames=handles.mov.NumberOfFrames;
[handles.Output1, handles.Output2] = display_function(handles.mov,handles.nFrames, handles.axes1);
注意我在我的计划handles = guidata(hObject);