VideoWriter -- trouble creating the example peaks.avi

Windows 7, 64-bit, Matlab R2011a...
I tried running the following code from the VideoWriter examples...
vidObj = VideoWriter('peaks.avi');
open(vidObj);
Z = peaks; surf(Z);
axis tight
set(gca,'nextplot','replacechildren');
for k = 1:20
surf(sin(2*pi*k/20)*Z,Z)
currFrame = getframe;
writeVideo(vidObj,currFrame);
end
close(vidObj);
This resulted in a faded still image of the first frame. Weirdly, my desktop behind the figure is also visible. I tried...
vidObj = VideoWriter('peaks.avi','Uncompressed AVI');
...which resulted in a video that looked sort of like a scrambled color TV set. Any ideas? Thanks in advance...

3 Comments

I don't think that this is a "VideoWriter" problem as much as it's a getframe() problem.
I believe that if you were to view the image captured into currFrame, it will look just as bad as the video. In other words, VideoWriter is working well, but it's being fed bad images.
The question of what to do next is a tricky one. I myself have lots of trouble with getframe() in this specific situation:
1. Using Windows Vista or Win7 (XP has no probs ok)
2. Capturing a 3D object (patch)
Are you using win7?
You could try putting a pause() in after the surf and before the getframe(). That will force a render update, and will give some time for that update to finish.
THANK YOU so much for the quick and very helpful responses...
Sven... You were right, it was a getframe() problem. When I viewed interim frames, they looked like the first frame.
Walter... Yep, I put a pause() in after the surf and before the getframe() and that fixed the weird faded (w/ desktop behind) quality.
Thanks for pointing me in the right direction. I found a surprisingly easy fix...
set(gcf,'renderer','zbuffer')

Sign in to comment.

More Answers (0)

Community Treasure Hunt

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

Start Hunting!