我在许多帧中都拍摄了图像。所有框架的尺寸都不同,因此我设置了每个轴的全局最大值和最小值,并使用了axis
命令,如下所示:
h = figure;
axis([-8.4188e+03 -7.9061e+03 -102.6261 518.2502 -25.4673 0.2780])
%axis tight manual % this ensures that getframe() returns a consistent size
filename = 'testanim.gif';
但是,尽管我发现Xs,Ys和Zs的最大和最小限制,但动画盒仍在不断更改尺寸。我的代码中还需要其他内容吗?
这是我用于绘制的代码:
% read the data
for k=1:length(FileNames)
FName = plyfiles(k).name;
plys=pcread(['Files\',FName]);
pcshow(plys) % Capture the plot as an image
frame = getframe(h);
im = frame2im(frame);
[imind,cm] = rgb2ind(im,256); % Write to the GIF File
if k == 1
imwrite(imind,cm,filename,'gif', 'Loopcount',inf);
else
imwrite(imind,cm,filename,'gif','WriteMode','append');
end
end
答案 0 :(得分:1)
pcshow
或imshow
一样, plot
将重置其写入的轴。您可以通过设置
hold on
创建轴后。但是,现在点云将显示在先前的点云之上,因此您还必须在绘制新的点云之前清除轴。
最简单的解决方案是在绘制后每次设置轴位置,而不是hold
绘制图。也就是说,
set(gca, 'PropertyName', property_value)
在pcshow
调用之后。我相信要设置的属性是“ XLim”,“ YLim”和“ ZLim”。