Follow by Email

Lets Learn together... Happy Reading

" Two roads diverged in a wood, and I,
I took the one less traveled by,
And that has made all the difference "-Robert Frost

Recent Posts

How to get frames from a video

MATLAB CODE to get images from 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
The above process can be done using 'mmreader' function also.

MATLAB CODE:

Vobj=mmreader('fun.avi');

Im=read(Vobj,58);
imshow(Im);

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);

like button Like "IMAGE PROCESSING" page

How to create Video from still image


                  Using a single JPEG image, we can create image sequences.  To create image sequences, we need to convert the image into frame. The matlab function   ‘im2frame’ is used to create frame from an image. In this example, I took an image and created some frames by performing rotation operation on that image.
                             Initially, I pre allocated a structure array.  When the function ‘im2frame’ is used on an image, a frame is created.  The frame is a structure that contains the cdata and the colormap.


Example:
I=imread(‘ball.jpg’);
frame(1)=im2frame(I);
frame(1)
ans =
       cdata: [323x400x3 uint8]
      colormap: []
After allocating the space for the frames, I rotated the image from 1 to 360 degrees with the interval of 10 degrees.  36 frames will be obtained.
During each rotation operation, the size of the image will be modified. So, I resized the image to the original size after every rotation.
MATLAB CODE:
%Create a video from still image
I=imread('ball.jpg');
m=size(I,1);
n=size(I,2);
j=1;
%Preallocate the structure array
%The fields are 'cdata' and 'colormap'
%The size should be 1xm
frame=struct('cdata',1,'colormap',cell([1 36]));

for i=1:10:360
    %Rotate the image
    Im=imrotate(I,i);
    %To convert an image to frame use the function 'im2frame'.
    frame(j)=im2frame(imresize(Im,[m n]));
j=j+1;
end

%scz=figure;
%set(scz, 'position', [300 100  size(I,1)+200 size(I,2)]);
%movie(scz ,frame,1,30);

%Play the image sequence with fps=10.
implay(frame,10);






We can either use ‘movie’ function or ‘implay’ function to play the video.
Function: movie
If the ‘movie’ function is used. Then we can specify the window size and the position.
%movie(scz ,frame,N,FPS);

N-number of times
FPS-Frames per second
Function :  implay
It can take two parameters, frames and the FPS.
like button Like "IMAGE PROCESSING" page
Previous Post Next Post Home
Related Posts Plugin for WordPress, Blogger...
Google ping Hypersmash.com