Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

How to obtain image frames from AVI file?

4,168 views
Skip to first unread message

Ross

unread,
Nov 6, 2007, 9:25:40 PM11/6/07
to
I'm trying to extract a certain set of image frames from a
movie file.

So far, I know how to use aviread to read the avi file into
matlab memory. I also know how to use frame2im to obtain a
single desired frame from the matlab file and then convert
it into a grayscale image.

However, I don't how to obtain a range of frames.

After I run

a=aviread('movie.avi')

Is there any function/code that will let me extract either
all the image frames from the movie or a section of the
image frames?

Also, I need the image frames to be grayscale.

Thanks

Andrew

unread,
Nov 6, 2007, 11:05:21 PM11/6/07
to
You may have a problem since

a=aviread('movie.avi');

Should extract all of the frames. If you look at the help
you can also add indexs for the frames you want, like

a = aviread('movie.avi', 1:5);

If the image colours aren't indexed you can convert them to
greyscale with rgb2gray (a.colormap will be empty)

Gray = rgb2gray(a(1).cdata);
figure; imagesc(Gray);
colormap(gray);

I haven't played with colour indexed images in Matlab
before though.

Cheers,
Andrew

"Ross " <ross.nos...@yahoo.com> wrote in message
<fgr7n4$pga$1...@fred.mathworks.com>...

Nick Haddad

unread,
Nov 7, 2007, 12:42:48 PM11/7/07
to Ross
Ross,

If you are using MATLAB R2007a and later you can use the new mmreader
function to extract your frames and then convert the data to grayscale
using rgb2gray. For example

% create an mmreader object
videoObject = mmreader('movie.avi');


% extract frames 1 through 5
imageData = read( videoObject, [1 5] );

% convert the data to grayscale
grayData = rgb2gray( imageData );

MMReader will also work on other video types, including mpeg-1 and
Windows Media video files.

-Nick

Dave Tarkowski

unread,
Nov 7, 2007, 2:16:50 PM11/7/07
to

You can read a range of frames using aviread. To read frames 10 through
93 you would use:

a = aviread('movie.avi', 10:93);

You can then convert the data into image data and convert those images
into grayscale images.

If you are using R2007b on Windows, you can also use the new MMREADER
functionality:

mov = mmreader('movie.avi');
data = read(mov, [10 93]);

would do the same as the AVIREAD command above except that you do not
need to use frame2im with the output of MMREADER. Also, MMREADER is
more robust and can read a larger variety of file types than AVIREAD.

-Dave Tarkowski

Ross

unread,
Nov 8, 2007, 9:29:30 PM11/8/07
to
Thank you all so much! That helps a lot.

I can now successfully extract and process frames for my
application.

Thanks again!

sweety

unread,
Aug 28, 2012, 11:09:52 AM8/28/12
to Ross
fin = 'e:\in.avi';
fout = 'd:\out.avi';
fileinfo = aviinfo(fin);
nframes = fileinfo.NumFrames;
aviobj = avifile(fout, 'compression', 'none', 'fps',
fileinfo.FramesPerSecond);
for i = 1:nframes
%Read frames from input video
mov_in = aviread(fin,i);
im_in = frame2im(mov_in);
gr=rgbgray(im_in);

gittogeo...@gmail.com

unread,
Sep 25, 2012, 6:42:18 AM9/25/12
to Ross
can u please help me to extract all the frames in a video and display it as images? i tried many codes. but my program is not showing anything.it is nt even showing an error.

vuhoang...@gmail.com

unread,
Oct 1, 2012, 9:36:59 AM10/1/12
to Ross
I am doing my senior project about image processing. you said that you can extract and process frames for your appication. Could you instruct me the step to extract and covert frame to grayscale imgage. thanks alot

themat...@gmail.com

unread,
Jan 26, 2013, 4:09:42 AM1/26/13
to Ross
for extracting frames from a video and saving it into a specific folder,code is given,visit

http://matlabnstuff.blogspot.in/2013/01/extracting-frames-from-video-file.html

modify a little bit,your task will be done :)

b.sh...@gmail.com

unread,
Mar 9, 2014, 11:07:33 AM3/9/14
to
Hi sweety:
ur code is perfect but wehn i try to convert the frames2im it tells me you have to use getframe function inorder to get the frames , any idea how to convert those frames into pictures without fram2im and i dont want the imwrite
0 new messages