how to convert the processed frames into video

7 views (last 30 days)
Hi, I wrote the code for deleting the shadows in video. For the sake i am working on frame basis. So after completing the operation i wish to play back the video.I tried with imshow() in loop but it didnt workout.Also tried movie structure but not clear on command execution.after running the code, i got output as blinking frame instead of video.
a=VideoReader('cam4v.mp4');
vidHeight = a.Height;
vidWidth = a.Width;
s = struct('cdata',zeros(vidHeight,vidWidth,3,'uint8'),...
'colormap',[]);
img=1;
for img = 1:20
x = read(a, img);
y = read(a,img+1);
% Do color conversion from rgb to hsv
x=rgb2hsv(x);
y=rgb2hsv(y);
% Split the hsv component to h,s,v value
Hx = x(:,:,1);
Sx = x(:,:,2);
Vx = x(:,:,3);
Hy = y(:,:,1);
Sy = y(:,:,2);
Vy = y(:,:,3);
%Find the absolute diffrence between h s v value of current and previous frame
dh=(abs(double(Hx) - double(Hy)));
ds1=(abs(double(Sx) - double(Sy)));
dv1=(abs(double(Vx) - double(Vy)));
%Perform the swt2 transformation on difference of s and v value
[as,hs,vs,ds] = swt2(ds1,1,'haar');
[av,hv,vv,dv] = swt2(dv1,1,'haar');
%Compute the skewness value of 'swt of v'
sav=skewness(av(:));
shv=skewness(hv(:));
svv=skewness(vv(:));
sdv=skewness(dv(:));
%Compute the skewness value of 'swt of s'
sas=skewness(as(:));
shs=skewness(hs(:));
svs=skewness(vs(:));
sds=skewness(ds(:));
b= (av>=sav);
c= (hv>=shv);
d=(vv>=svv);
e=(dv>=sdv);
f= (as>=sas);
g=(hs>=shs);
h=(vs>=svs);
i=(ds>=sds);
j=(b&f);
k=(c&g);
l=(d&h);
m=(e&i);
recv = iswt2(b,c,d,e,'haar');
recs= iswt2(j,k,l,m,'haar');
de_shadow=cat(3,dh,recs,recv);
rgb=hsv2rgb(de_shadow);
imshow(rgb);
title('outputframe');
movie(s);
end

Accepted Answer

Image Analyst
Image Analyst on 26 Nov 2017
See attached demos that create videos. Adapt as needed.
  2 Comments
SHOBA MOHAN
SHOBA MOHAN on 27 Nov 2017
this code works after resizing the image by incorporating the following code thisFrame=imresize(thisFrame,[452, 231]); Please include this code prior to this code recalledMovie(frame) = im2frame(thisFrame); If you wish you can also change in demode code. Thank you.

Sign in to comment.

More Answers (0)

Categories

Find more on C4ISR in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!