Recently I use image acquistion toolbox, the image captured is very gloomy

2 views (last 30 days)
Recently I use image acquistion toolbox, the image captured is very gloomy, but the image in preview figure is clear bright.
% This is copyed from Image acquistion toolbox
vid = videoinput('winvideo', 1, 'I420_640x480');
src = getselectedsource(vid);
% Set video input object properties for this application.
set(vid,'TriggerRepeat',Inf);
vid.FrameGrabInterval = 1;
% Set value of a video source object property.
vid_src = getselectedsource(vid);
set(vid_src,'Tag','motion detection setup');
preview(vid);
% Create a figure window.
figure;
% Start acquiring frames.
start(vid)
% display it.
while(vid.FramesAcquired<=100) % Stop after 100 frames
frame = getsnapshot(vid);
imshow(frame); %%This is used to show the snapshot, very gloomy
end
stop(vid)
closepreview(vid)

Accepted Answer

David Tarkowski
David Tarkowski on 5 Dec 2012
You're trying to display an image in the YCbCr color space (that's what the I420 in your videoinput line means) with a function that is expecting RGB data.
If you do:
vid = videoinput('winvideo', 1, 'I420_640x480');
vid.ReturnedColorSpace = 'RGB';
then the toolbox will convert the data to RGB data when you call getsnapshot or getdata. If you actually want the YCbCr data you can omit changing the ReturnedColorSpace property and instead convert the data before displaying it:
frame = getsnapshot(vid);
imshow(ycbcr2rgb(frame));

More Answers (0)

Community Treasure Hunt

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

Start Hunting!