Convert live colour video into gray scale video?

8 vues (au cours des 30 derniers jours)
Koohyar
Koohyar le 6 Sep 2020
Commenté : Image Analyst le 29 Mai 2022
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
  2 commentaires
Image Analyst
Image Analyst le 6 Sep 2020
You forgot to call rgb2gray()
Koohyar
Koohyar le 6 Sep 2020
Many thanks for your comments, please can you show me where should I call rgb2gray()? it goes to each frame? gray = rgb2gray(vid)?

Connectez-vous pour commenter.

Réponse acceptée

Amrtanshu Raj
Amrtanshu Raj le 9 Sep 2020
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);
  6 commentaires
almog haviv
almog haviv le 29 Mai 2022
Allow an explanation of the code
Image Analyst
Image Analyst le 29 Mai 2022
@almog haviv There are numerous comments all over. What lines are you confused about?

Connectez-vous pour commenter.

Plus de réponses (0)

Community Treasure Hunt

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

Start Hunting!

Translated by