gpt4 book ai didi

MATLAB:使用 writeVideo 制作视频

转载 作者:行者123 更新时间:2023-12-01 15:14:18 26 4
gpt4 key购买 nike

我目前正在尝试使用 MATLAB 中的 writeVideo 函数制作视频。我使用 GUIDE 制作了一个 GUI,其中包括一个 slider 、几个复选框和一个轴(标记为 axes1)。当我移动 slider 时,轴将绘制根据 slider 值变化的特定形状。

我想做的是录制用于在演示文稿中显示功能的 GUI 视频。然而,当我播放视频时(在使用 writeVideo 制作视频后),它显示 slider 值移动并且复选框被正确选中,但情节永远不会改变(即它只会显示原始形状)。这似乎是一些刷新错误,但是,我尝试过的任何方法都不起作用(刷新、drawnow 等)

知道为什么会这样吗?以下是我要实现的代码:

vidObj = VideoWriter('test.avi','Motion JPEG AVI');
open(vidObj);
flag = 0;
if flag<12 %movie will be 12 frames long
flag = flag+1;
if slider<1
plot something...
elseif slider>=1 && slider<2
plot something else...
etc...
elseif slider<=5
plot something else...
end

hFigure = findobj('Name','gui');
currFrame = getframe(hFigure);
writeVideo(vidObj,currFrame);

clear hfigure currFrame image;
else
fprintf('done\n')
close(vidObj);
end

如前所述,然后我可以使用 implay 播放 test.avi 文件,但是,情节永远不会更新。

提前致谢

注意:我使用的是 MATLAB R2012b

编辑:

以下是我最终制作视频的方式:也许这会对面临与上述问题类似问题的人有所帮助。

我基本上放弃了使用 getframe 并决定 1) 获取屏幕截图,然后 2) 将屏幕截图制作成电影。为了获得屏幕截图,我首先运行我的程序,然后在命令窗口中使用 java 工具包调用以下代码

i = 1;
while true
robo = java.awt.Robot;
t = java.awt.Toolkit.getDefaultToolkit();

%# Set screen size
rectangle = java.awt.Rectangle(0,0,1000,640);

%# Get the capture
image = robo.createScreenCapture(rectangle);

%# Save it to file
filehandle = java.io.File(sprintf('capture%d.jpg', i));
javax.imageio.ImageIO.write(image,'jpg',filehandle);

pause(.4) %# Wait for 0.4 seconds
i = i + 1;
end

然后它会在后台持续运行并拍摄屏幕快照并将它们存储到当前目录中。要阻止它运行,只需使用 Ctrl C。获得屏幕截图后,我使用以下代码创建了影片:

vidObj = VideoWriter('test.avi','Motion JPEG AVI');
open(vidObj);
for i=7:87 %these are the frames I wanted in my movie
x = num2str(i);
im = horzcat('capture',x);
im1 = horzcat(im,'.jpg')
imdata = imread(im1);
writeVideo(vidObj,imdata);
end
close(vidObj);

最佳答案

getframe 有时会出现问题。我不确定我能给出答案,而且我不能因为我的声誉而简单地发表评论,但是这个link可能会有帮助。从 GUI 获取图形后,将其转换为图像,然后转换为框架。值得一试。

关于MATLAB:使用 writeVideo 制作视频,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15951048/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com