getframe not updating when outputting video/images

1 view (last 30 days)
Brian on 21 Jul 2014
Commented: Chad Greene on 21 Jul 2014
Hello, thanks for reading this,
I have a image that I'm outputting to a gif/avi video, and neither one seems to work.
When I use the code:
lseg = getframe(h);
imwrite(lseg.cdata, outputFileName, 'WriteMode', 'append');
camorbit(1, 0, 'data', [0 0 1])
and see my image stack, they're all the same image: the lseg frame never gets updated when I rotate with camorbit. Additionally, when I try to make a video with:
fps = 60; sec = 10;
vidObj = VideoWriter('newfile.avi');
vidObj.Quality = 100;
vidObj.FrameRate = fps;
for i=1:fps*sec
I get a 10 second video of a static frame: again, getframe never gets updated to the frame rotated by camorbit.
When I view the image as its writing, I can see the figure rotating. Its just when MATLAB writes to file, the written file frames are not updated.
Any ideas?
  1 Comment
Brian on 21 Jul 2014
Actually, I got the video export to work by including the line
after camorbit.

Sign in to comment.

Accepted Answer

Brian on 21 Jul 2014
Use drawnow after camorbit and it works.

More Answers (1)

Chad Greene
Chad Greene on 21 Jul 2014
I've had troubles with getframe in the past. I've had better luck using export_fig . The syntax would be
frame = export_fig(gcf);
Chad Greene
Chad Greene on 21 Jul 2014
I think you'd need the -nocrop option in export_fit. That's because by default export_fig crops the frame to the dimensions of where plotted objects appear on the figure. If some data being plotted in your figure starts to go near the edge of the frame, export_fig will increase need to increase the size of the frame. Using the -nocrop option prevents the automatic frame sizing.

Sign in to comment.

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by