MATLAB CODE to get images from video:
To extract frames from a video.
To extract frames from a video.
Frames can be obtained from a video and converted into images. To convert a video frame into an image, the MATLAB function ‘frame2im’ is used.
To read a video in avi format, the function ‘aviread’ is used. The original format of the video that I am using as an example is .gif file format. I converted the .gif file format image into an avi format video. Learn how to convert a gif image into a video...
For instance, in the ‘fun.avi’ video I am interested in the frame number 58. So I am converting the 58th frame into an image.
MATLAB CODE:
%How to get frames from a video
mov=aviread('fun.avi');
Im=frame2im(mov(1,58));
figure,imshow(Im);
Frame 58 |
After playing the video, I thought of modifying some frames. So I converted the frames from 58 to 64 into images and added a smiley to the images by performing image arithmetic operations.
Then I converted those images into frames and saved as a video file in ‘smiley.avi’.
Lmov=aviread('smiley.avi');
MIm=frame2im(Lmov(1,1));
figure,imshow(MIm);
Modified Frame 58 |
%Preallocating the structure array
frame=struct('cdata',1,'colormap',cell([1 91]));
I added the modified frames to the original video.
%Modify the video in the middle
frame(1,1:57)=mov(1,1:57);
frame(1,58:87)=Lmov(1,1:30);
frame(1,88:91)=mov(1,64:67);
implay(frame,5);
If we are interested in playing only some of the frames in the original video then, we can view those frames alone. Here I am interested in viewing the frames from 27 to 33.
%Part of the video
scz=figure;
set(scz, 'position', [300 100 size(Im,1)+130 size(Im,2)-100]);
FRange=[1 27:33];
%Here 1 is for the number of times the video has to be repeated
%27:33 indicates the frames from 27 to 33.
movie(scz,mov,FRange,5);
We can also save the desired frames into a file. An avifile object is created with the file name ‘VidPart.avi’. Then the desired frames from 27 to 33 are added by using the syntax ‘addframe’.
%To save the desired part alone
obj=avifile('VidPart.avi','FPS',5);
obj=addframe(obj,mov(27:33));
obj=close(obj);
0 comments:
Post a Comment