2013-02-02 19 views
8

Jak ustawić rozdzielczość animacji zapisanej jako film MP4 z modułem "matplotlib.animation"?Jak ustawić rozdzielczość obrazu dla animacji?

W internecie znalazłem tylko przykłady używając "animation.FuncAnimation". Na przykład ładny poradnik z http://jakevdp.github.com/blog/2012/08/18/matplotlib-animation-tutorial/ używane:

anim = animation.FuncAnimation(fig, animate, init_func=init, 
          frames=200, interval=20, blit=True) 
anim.save('basic_animation.mp4', fps=30, extra_args=['-vcodec', 'libx264']) 

Z odniesieniem modułu matplotlib.animation znalazłem „animation.Animation.save” metodę zapewniającą „dpi” -argument, ale nie wiem jak Zastosuj tę funkcję poprawnie

matplotlib.animation.Animation.save(filename, writer=None, fps=None, dpi=None, codec=None, bitrate=None, extra_args=None, metadata=None, extra_anim=None) 

Pomocny może być przykładowy kod.

Wielkie dzięki.

Johannes

PS: Przy okazji, jak można wstawić kod Pythona z sytax wyróżniania?

+0

Podświetlenie jest auto-magiczne. Zwróć też uwagę, że moduł animacji jest względny, więc musisz sprawdzić, czy twoja wersja 'matplotlib' pasuje do wersji znalezionych przykładów. – tacaswell

+0

Czy to załatwiłeś? – tacaswell

Odpowiedz

2

bitrate to parametr używany do określenia jakości filmu. Im wyższa wartość, jaką ustawisz, tym wyższa będzie jakość filmu.

+0

Ale jeśli uruchomiłem powyższy przykład z 'anim = animation.FuncAnimation (rys, aktualizacja, init_func = init, frames = len (t), blit = True) animation.Animation.save (anim, 'toll.mp4 ', fps = 20, bitrate = 20, kodek =' mp4 ') ' Wystąpił błąd" save() dostał nieoczekiwany argument słowa kluczowego "bitrate" ". –

+1

Myślę, że "bitrate" (i może "dpi") zostały dodane około MPL 1.2. –

5

Możesz kontrolować rozdzielczość w okrągły sposób. Rozdzielczość, rozmiar i rozdzielczość nie są niezależne, jeśli znasz dwa z nich, trzeci jest poprawiony.

Można ustawić dpi w arguement ratować, i zanim się zapisać, należy ustawić rozmiar rysunku z

fig.set_size_inches(h_in_inches, w_in_inches, True). 

Twoja rozdzielczość to wtedy dpi * h_in_inches X dpi * w_in_inches.

dpi = 100 
writer = animation.writers['ffmpeg'](fps=30) 
ani.save('test.mp4',writer=writer,dpi=dpi) 

może co musisz zrobić upgrade do nowszej wersji MPL (debian jest wielki, ponieważ jest tak konserwatywny i okropny, ponieważ jest tak konserwatywny) od źródła.

+0

Hmm ok, ale ten sam TypeError, co w przypadku argumentu "bitrate": 'anim = animation.FuncAnimation (rys, aktualizacja, init_func = init, frames = len (t), blit = True) animation.Animation. save (anim, toll.mp4 ', fps = 20, dpi = 800, kodek =' mp4 ') 'Otrzymuję błąd" save() ma nieoczekiwany argument słowa kluczowego' dpi '" –

+0

Wielkie dzięki, teraz jest działa, metoda "figure.set_dpi()" nie ma żadnego efektu, ale wywołanie 'fig.set_size_inches (h_in_inches, w_in_inches)' powoduje, że rozdzielczość obrazu wynosi "h_in_inches xw_in_inches". –

+0

@mr_endres jakiej wersji MPL używasz? – tacaswell

Powiązane problemy