Matlab: анимация добавленной строки к изображению

мне удается добавить горизонтальную линию к изображению. я хочу, чтобы линия начала двигаться вниз, стирая при этом предыдущую строку. и, наконец, я хочу сохранить этот фильм в формате avi

вот мой код

A=imread('IMG_0628.JPG');
B=A(:,:,2);
for k=1:50:801
imshow(B), hold on
plot([1,597],[k,k])
N(k)=getframe
end

при отображении анимации я получаю в командных окнах следующее

N = 

   cdata: [400x299x3 uint8]
colormap: []


N = 

1x51 struct array with fields:
cdata
colormap


N = 

1x101 struct array with fields:
cdata
colormap


N = 

1x151 struct array with fields:
cdata
colormap

При попытке запустить фильм командой movie(N) получаю следующую ошибку

??? Error using ==> movie
Movie contains uninitialized frames

Есть ли лучший способ улучшить мой код и добиться моей анимации?


person user2371743    schedule 10.05.2013    source источник


Ответы (1)


Две вещи:

Верните дескриптор при построении линии, затем удалите дескриптор после getframe и убедитесь, что кадры фильма последовательно пронумерованы (сейчас у вас есть один непустой кадр каждые 50 кадров):

  A=imread('IMG_0628.JPG');
  B=A(:,:,2);
  imshow(B); hold on;
  counter = 1;
  for k=1:50:801
      linehandle = plot([1,597],[k,k]);
      N(counter)=getframe;
      counter = counter + 1;
      delete(linehandle);
  end
person Ansari    schedule 10.05.2013