Я искал stackoverflow для аналогичного вопроса, и я нашел вопрос «movie2avi-frame-size-error-and-keep-frame-size-constant». К сожалению, ответ на этот вопрос не разрешил мою проблему (было предложено использовать xlim, ylim и zlim).movie2avi - как исправить размер рамки?
В дальнейшем я отправляю слегка модифицированную версию известного примера, приведенного в другом месте.
%# figure
figure, set(gcf, 'Color','white')
Z = peaks; surf(Z); axis tight
set(gca, 'nextplot','replacechildren', 'Visible','off');
[az,el]=view;
xl=xlim;
yl=ylim;
zl=zlim;
%# preallocate
nFrames = 20;
mov(1:nFrames) = struct('cdata',[], 'colormap',[]);
%# create movie
for k=1:nFrames
view([(az-k*10) el]);
xlim(xl);ylim(yl);zlim(zl);
drawnow;pause(0.1);
mov(k) = getframe(gca);
end
close(gcf)
%# save as AVI file, and open it using system video player
movie2avi(mov, 'myPeaks1.avi', 'compression','None', 'fps',10);
Идея состоит в том, чтобы повернуть фигуру и создать фильм. Все работает отлично, за исключением последней команды, то есть movie2avi. Тзд ошибка
Error using avifile/addframe>ValidateFrame (line 290)
Frame must be 435 by 344.
Error in avifile/addframe (line 158)
ValidateFrame(aviobj,width, height,dims);
Error in movie2avi (line 67)
avimov = addframe(avimov,mov);
Error in more_video_test (line 24)
movie2avi(mov, 'myPeaks1.avi', 'compression','None', 'fps',10);
Я посмотрел на подходах-к-Create-A-видео-в-MATLAB здесь в StackOverflow и обнаружили, что:
а) Решение FFmpeg работает, но я хотел бы избежать Это.
b) Все остальные решения не прошли даже QTWriter. Как я могу исправить размер кадра, чтобы работали все эти другие решения?
Большое спасибо.
Ed
Посмотрите на новый класс 'VideoWriter' в MATLAB. Вы все еще используете 'getframe', но затем вы используете метод writeVideo для сохранения каждого кадра внутри цикла. http://www.mathworks.com/help/matlab/ref/videowriterclass.html – chappjc
Это не «приятное» решение, поэтому я не буду публиковать его как ответ, но я думаю, что если вы укажете прямоугольник в getFrame (напримерgetframe (gca, [0 0 435 344]);) должен решить эту проблему ... – pseudoDust
Кроме того, это может помочь установить атрибут позиции оси. – pseudoDust