MATLAB: Convert live colour video into gray scale video

digital image processingimage acquisitionimage processing

Hi,
I am using MATLAB for image processing.I need to have a gray scale video saved in disk. Please can you help me to manipulate the following script in order to give a gray scale video.I changed the set(vid, 'ReturnedColorspace', 'rgb') to set(vid, 'ReturnedColorspace', 'grayscale'), but it shows error (Error using im2frame
Indexed movie frame must have a non-empty colormap).
imaqreset;
%warning('off','all'); %.... diable warining msg ...;
vid = videoinput('winvideo',1, 'YUY2_640x480');
set(vid, 'FramesPerTrigger', Inf);
set(vid, 'ReturnedColorspace', 'rgb');
% vid.FrameRate =30;
vid.FrameGrabInterval = 1; % distance between captured frames
start(vid)
aviObject = VideoWriter('myVideo.avi'); % Create a new AVI file
open(aviObject);
for iFrame = 1:50 % Capture 100 frames
% ...

% You would capture a single image I from your webcam here
% ...
I=getsnapshot(vid);
%imshow(I);
F = im2frame(I); % Convert I to a movie frame
writeVideo(aviObject,F); % Add the frame to the AVI file
end
close(aviObject); % Close the AVI file
stop(vid);
thanks

Best Answer

Hi,
You can modify your code like this to get the desired results.
CODE :
imaqreset;
%warning('off','all'); %.... diable warining msg ...;
vid = videoinput('winvideo',1, 'YUY2_640x480');
set(vid, 'FramesPerTrigger', Inf);
set(vid, 'ReturnedColorspace', 'rgb');
% vid.FrameRate =30;
vid.FrameGrabInterval = 1; % distance between captured frames
start(vid)
aviObject = VideoWriter('myVideo.avi'); % Create a new AVI file
open(aviObject);
for iFrame = 1:50 % Capture 100 frames
% ...

% You would capture a single image I from your webcam here
% ...
I=getsnapshot(vid);
%changes made here
grayimg = rgb2gray(I); % Convert rgb image to grayscale img
%imshow(I);
F = im2frame(grayimg); % Convert grayimg to a movie frame
writeVideo(aviObject,F); % Add the frame to the AVI file
end
close(aviObject); % Close the AVI file
stop(vid);