File Exchange

## Figure to play and analyze videos with custom plots on top

version 1.1.0.0 (3.79 KB) by Joao Henriques

### Joao Henriques (view profile)

A figure ready to scroll through and play videos. You can also draw any custom graphics on it.

Updated 12 Dec 2010

Editor's Note: This file was selected as MATLAB Central Pick of the Week

VIDEOFIG(NUM_FRAMES, @REDRAW_FUNC) creates a figure with a horizontal scrollbar and shortcuts to scroll automatically. The scroll range is 1 to NUM_FRAMES. The function REDRAW_FUNC(F) is called to redraw at scroll position F (for example, REDRAW_FUNC can show the frame F of a video).

This can be used not only to play and analyze standard videos, but it also lets you place any custom Matlab plots and graphics on top.

Jiro posted a great example on the Pick of the Week blog, along with a nice GIF animation so you can see it in motion:
http://blogs.mathworks.com/pick/2010/12/10/video-player-for-your-frame-based-processing/

EXAMPLE 1

Place this in a file called "redraw.m":
function redraw(frame)
imshow(['AT3_1m4_' num2str(frame, '%02.0f') '.tif'])
end

Then from a script or the command line, call:
videofig(10, @redraw);
redraw(1)

The images "AT3_1m4_01.tif" ... "AT3_1m4_10.tif" are part of the Image

EXAMPLE 2

Change the redraw function to visualize the contour of a single cell:
function redraw(frame)
im = imread(['AT3_1m4_' num2str(frame, '%02.0f') '.tif']);
slice = im(210:310, 210:340);
[ys, xs] = find(slice < 50 | slice > 100);
pos = 210 + median([xs, ys]);
siz = 3.5 * std([xs, ys]);
imshow(im), hold on
rectangle('Position',[pos - siz/2, siz], 'EdgeColor','g', 'Curvature',[1, 1])
hold off
end

The keyboard shortcuts are:
Enter (Return) -- play/pause video (25 frames-per-second default).
Backspace -- play/pause video 5 times slower.
Right/left arrow keys -- advance/go back one frame.
Page down/page up -- advance/go back 30 frames.
Home/end -- go to first/last frame of video.

See HELP VIDEOFIG for more options.

### Cite As

Joao Henriques (2019). Figure to play and analyze videos with custom plots on top (https://www.mathworks.com/matlabcentral/fileexchange/29544-figure-to-play-and-analyze-videos-with-custom-plots-on-top), MATLAB Central File Exchange. Retrieved .

### Mohamad Hussein khalife (view profile)

how can i use this for my own plots. Lets say I have a for loop and in it my counter k goes through certain positions and and draw a plot for each position and I get the frames in a variable called M for example. in the for loop: ...............
M(k) = getframe(gcf)
end
Now I wanna use this function with the M with all the frames, how do I do that ?

Prince Chowdhury

### Prince Chowdhury (view profile)

Hi, I don't understand how to make this work. Could someone please explain? There's already a built in redraw.m file in matlab, am i supposed to modify that with the text in example 1? Also, how can I call my specific video so that I can play that video? where is the argument in which the user can input the path or name of the video they want to play? Thanks!

Renaud

### Renaud (view profile)

One question: Is there a way to save the processed frames into an .avi file?

Thanks!!

Iván

### Iván (view profile)

This is excellent!!
It's more than what I was looking for!
Thanks! =)