Matlab: использование avifile, addframe, getframe; сгенерированный avi искажен - PullRequest
2 голосов
/ 29 апреля 2011

Я тренирую алгоритм машинного обучения и хотел сделать 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

Числа не должны иметь такой ориентации. Это происходит с любым avi, который я генерирую в matlab.

Есть предложения?

-Брайан

1 Ответ

3 голосов
/ 05 мая 2011

Наконец-то успел вернуться к этому.Проблема была из-за осей.Когда используется что-то вроде image или imagesc, оно прикрепляется к дополнительной черной границе в нижней и левой части изображения.Когда вы используете 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 исправляет его.

...