Unable to execute getdata in subfunction

1 view (last 30 days)
Hi, i have created a gui to capture image from webcam. however, there is error message whenever i press the push button. if codes in function cap is in main function, the work done properly. unfortunately my project requires me to capture image after pressing the push button.
can anyone help me pls?
my code
figure('MenuBar','none','Name','FYPGUI','NumberTitle','off','Position',[100,100,900,700],'resize','off');
uicontrol('Style','PushButton','String','Push','Position',[20,100,60,20],'CallBack',@cap);
display=axes('Units','Pixels','Position',[120 120 640 480]);
vid = videoinput('winvideo',2,'YUY2_640x480');
vidRes = get(vid, 'VideoResolution');
nBands = get(vid, 'NumberOfBands');
hImage = image( zeros(vidRes(2), vidRes(1)) );
vid.FramesPerTrigger = 1;
preview(vid,hImage);
start(vid);
function cap(hObject,event,vid)
global vid;
frame = getdata(vid);
figure,imshow(frame);
clear all;
end
The error message is:
??? Undefined function or method 'getdata' for input arguments of type 'double'.
Error in ==> FYPGUI>cap at 44
frame = getdata(vid);
??? Error while evaluating uicontrol Callback

Accepted Answer

Walter Roberson
Walter Roberson on 16 Nov 2011
global variables must be declared as global in every function they are used in. You do not declare vid to be global in your main script.

More Answers (0)

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!