Matlab 录制错误帧的电影创作
上面的代码创建一部电影,每次只录制第一帧。我尝试过这些(正如您在代码中看到的),但没有成功 数据(部分):Matlab 录制错误帧的电影创作,matlab,animation,video,figure,Matlab,Animation,Video,Figure,上面的代码创建一部电影,每次只录制第一帧。我尝试过这些(正如您在代码中看到的),但没有成功 数据(部分): 最坏的情况下,我将不得不写所有的图像到磁盘上,并创建它的电影 您正在正确地编写视频。 问题是,大多数视频播放器不会显示为提高计算时间而保存的所有帧。这在很大程度上取决于您保存视频的格式 例如,如果将视频保存在'Motion JPEG AVI'中,则会得到较大的压缩,而将其保存在'MPEG-4'中,则压缩较小 这里的要点是:如果您希望能够看到视频的原样,请将其保存在一个非常小/无压缩的文件类
最坏的情况下,我将不得不写所有的图像到磁盘上,并创建它的电影 您正在正确地编写视频。 问题是,大多数视频播放器不会显示为提高计算时间而保存的所有帧。这在很大程度上取决于您保存视频的格式 例如,如果将视频保存在
'Motion JPEG AVI'
中,则会得到较大的压缩,而将其保存在'MPEG-4'
中,则压缩较小
这里的要点是:如果您希望能够看到视频的原样,请将其保存在一个非常小/无压缩的文件类型中。此外,千万不要相信VLC或任何其他视频播放器为您播放的内容,如果您想检查帧,请加载视频并检查它们
如果使用
vidObj=VideoWriter(filename_mov,'MPEG-4'),您将看到这一点编码>并在任何视频播放器中打开它,您将看到更改,但是如果您以这种方式保存它,然后再次将它们加载到MATLAB,帧是完全相同的。您能给我们这些数据的复制位置吗?matrix_all、timespteps、num_代理。@AnderBiguri感谢您的回复!请检查我是否发布了一些数据。我不认为这个问题会具体到具体的数据。对不起,你不明白。我们不想查看您的数据,我们想要一段代码,如果我们通过复制粘贴来尝试它,它就可以工作。@AnderBiguri现在请检查我已经添加了对函数的调用。是的,对不起。下次尝试使用我们能看到的数据,对所有人来说都更容易。太棒了!非常感谢你的帮助!这两种格式似乎都适用于Quicktime
!
function create_simulation( matrix_all,timesteps,num_agents )
mkdir('movies');
filename_mov='.\movies\vid1';
vidObj = VideoWriter(filename_mov,'Motion JPEG AVI');
set(vidObj,'Quality',100,'FrameRate',2);
%matrix_all='time','id','xcor','ycor'
time=matrix_all(:,1);
id=matrix_all(:,2);
x=matrix_all(:,3);
y=matrix_all(:,4);
colors=jet(num_agents);
min_x=min(x);max_x=max(x);min_y=min(y);max_y=max(y);
f=figure('renderer', 'zbuffer');
a = axes('Parent',f);
axis(a,'tight');
set(a,'nextplot','replacechildren');
open(vidObj);
for t=1:timesteps,
t_filter=time==t;
scatter(x(t_filter),y(t_filter),[],colors,'filled');
xlim([min_x max_x]);
ylim([min_y max_y]);
xlabel(num2str(t));
drawnow;
writeVideo(vidObj, getframe(f));
end
close(vidObj);
end
>>matrix_all
1 1 680.640000000000 898.650000000000
1 2 754.610000000000 832.080000000000
1 3 864.500000000000 935.870000000000
1 4 752.080000000000 1023
1 5 728.080000000000 1052.10000000000
1 6 787.900000000000 1030.60000000000
2 1 678.170000000000 898.650000000000
2 2 754.610000000000 832.080000000000
2 3 864.500000000000 935.870000000000
2 4 752.080000000000 1023
2 5 728.080000000000 1052.10000000000
2 6 787.900000000000 1030.60000000000
3 1 678.170000000000 898.650000000000
3 2 754.610000000000 832.080000000000
3 3 864.500000000000 935.870000000000
3 4 752.080000000000 1023
3 5 728.080000000000 1052.10000000000
3 6 787.900000000000 1030.60000000000
4 1 678.170000000000 898.650000000000
4 2 754.610000000000 832.080000000000
4 3 864.500000000000 935.870000000000
4 4 752.080000000000 1023
4 5 728.080000000000 1052.10000000000
4 6 787.900000000000 1030.60000000000
>> create_simulation( matrix_all,4,6)