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.
No comments:
Post a Comment