Matlab:使用avifile,addframe,getframe;生成的avi被扭曲了

时间:2011-04-29 18:21:22

标签: matlab video screen-capture avi

我正在训练机器学习算法,并希望制作一个avi来显示权重随时间的变化。我把类似的东西扔到了一起:

aviobj = avifile( 'weights.avi' );
for jj = 1:whatever
  % do some training
  imagesc( ... ); % where '...' is stuff to reshape the weight matrix
  aviobj = addframe( aviobj, getframe );
end;
aviobj = close( aviobj );
implay( 'weights.avi' );

问题是,帧最终看起来像这样: enter image description here

数字不应该有这个方向。我在matlab中生成的任何avi都会出现这种情况。

有什么建议吗?

-Brian

1 个答案:

答案 0 :(得分:3)

终于有时间回到这里了。问题是由于轴。当使用imageimagesc之类的东西时,它会在底部和底部加上额外的黑色边框线。左边的图像。当您使用getframe时,它只会抓取绘制的图像数据,而不是黑线。但是,帧本身略大于图像数据。

以下解决了这个问题:

aviobj = avifile( 'weights.avi' );
fig = figure;
for jj = 1:whatever
  % do some training
  imagesc( ... ); % where '...' is stuff to reshape the weight matrix
  axis off;
  aviobj = addframe( aviobj, getframe( fig ) );
end;
aviobj = close( aviobj );
implay( 'weights.avi' );

设置axis off修复了它。