2016-07-18 111 views
6

Ho giocato con gif animate in Python, dove i fotogrammi saranno prodotti da una fotocamera Raspberry Pi posizionata in una serra. Ho utilizzato il codice di immagine consigliato da Almar's answer to a previous question con successo per creare gif semplici.Durata fotogrammi personalizzata per Gif animate in Python ImageIO

Tuttavia, ora sto provando a rallentare la durata del fotogramma ma guardando il documentation for imageio e non riesco a trovare riferimenti per mimsave ma vedo mimwrite, che dovrebbe richiedere quattro argomenti. Ho guardato il additional gif documentation e posso vedere che c'è un argomento di durata.

Attualmente, il mio codice è simile:

exportname = "output.gif" 
kargs = { 'duration': 5 } 
imageio.mimsave(exportname, frames, 'GIF', kargs) 

e sto ottenendo il seguente errore:

Traceback (most recent call last): 
File "makegif.py", line 23, in <module> 
imageio.mimsave(exportname, frames, 'GIF', kargs) 
TypeError: mimwrite() takes at most 3 arguments (4 given) 

dove fotogrammi è un elenco di oggetti imageio.imread. Perchè è questo?

AGGIORNATO PER MOSTRARE UNA RISPOSTA COMPLETA: Questo è un esempio che mostra come creare gif animate con imageio utilizzando kwargs per modificare la durata del fotogramma.

import imageio 
import os 
import sys 

if len(sys.argv) < 2: 
    print("Not enough args - add the full path") 

indir = sys.argv[1] 

frames = [] 

# Load each file into a list 
for root, dirs, filenames in os.walk(indir): 
    for filename in filenames: 
    if filename.endswith(".jpg"): 
     print(filename) 
     frames.append(imageio.imread(indir + "/" + filename)) 


# Save them as frames into a gif 
exportname = "output.gif" 
kargs = { 'duration': 5 } 
imageio.mimsave(exportname, frames, 'GIF', **kargs) 

risposta

9

mimsave non accetta 4 posizionali argomenti. Qualsiasi argomento oltre il 3o argomento deve essere fornito come argomento di parola . In altre parole, devi scompattare kargs in questo modo:

imageio.mimsave(exportname, frames, 'GIF', **kargs) 
+0

Legend. Il mio cervello sbiadito ti ringrazia ... –

2

Oppure si potrebbe chiamare così:

imageio.mimsave(exportname, frames, format='GIF', duration=5)