My first Matlab tips. We will create a GUI form that will preview and capture picture from webcam connected to your computer. Webcam preview and captured image will be shown on an axes.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
% choose which webcam (winvideo-1) and which mode (YUY2_176x144) vid = videoinput('winvideo', 1, 'YUY2_176x144'); % only capture one frame per trigger, we are not recording a video vid.FramesPerTrigger = 1; % output would image in RGB color space vid.ReturnedColorspace = 'rgb'; % tell matlab to start the webcam on user request, not automatically triggerconfig(vid, 'manual'); % we need this to know the image height and width vidRes = get(vid, 'VideoResolution'); % image width imWidth = vidRes(1); % image height imHeight = vidRes(2); % number of bands of our image (should be 3 because it's RGB) nBands = get(vid, 'NumberOfBands'); % create an empty image container and show it on axPreview hImage = image(zeros(imHeight, imWidth, nBands), 'parent', handles.axPreview); % begin the webcam preview preview(vid, hImage);
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
vid = videoinput('winvideo', 1, 'YUY2_176x144'); vid.FramesPerTrigger = 1; vid.ReturnedColorspace = 'rgb'; triggerconfig(vid, 'manual'); vidRes = get(vid, 'VideoResolution'); imWidth = vidRes(1); imHeight = vidRes(2); nBands = get(vid, 'NumberOfBands'); hImage = image(zeros(imHeight, imWidth, nBands), 'parent', handles.axPreview) preview(vid, hImage); % prepare for capturing the image preview start(vid); % pause for 3 seconds to give our webcam a "warm-up" time pause(3); % do capture! trigger(vid); % stop the preview stoppreview(vid); % get the captured image data and save it on capt1 variable capt1 = getdata(vid); % now write capt1 into file named captured.png imwrite(capt1, 'captured.png'); % just dialog that we are done capturing warndlg('Done!');
Things to remember:
UPDATE: since there are people that having difficulties implementing the code, you can download this .zip file so you can quickly try it on your own Matlab. (Please remember that this code is created using Matlab 2011a GUIDE, I don’t guarantee it will work on earlier version)Download MATLAB demo codes to capture image from webcam