web-dev-qa-db-fra.com

Comment créer un film avec des images dans python

J'essaie actuellement de faire un film à partir d'images, mais je n'ai rien trouvé d'utile.

Voici mon code jusqu'à présent:

import time

from PIL import  ImageGrab

x =0

while True:
    try:
        x+= 1
        ImageGrab().grab().save('img{}.png'.format(str(x))
    except:
        movie = #Idontknow
        for _ in range(x):
            movie.save("img{}.png".format(str(_)))

movie.save()
19
Victor

Vous pouvez envisager d'utiliser un outil externe tel que ffmpeg pour fusionner les images dans un film (voir la réponse ici ) ou d'essayer d'utiliser OpenCv pour combiner les images dans un film comme dans l'exemple ici .

Je joins ci-dessous un code que j'ai utilisé pour combiner tous les fichiers png d'un dossier appelé "images" dans une vidéo.

import cv2
import os

image_folder = 'images'
video_name = 'video.avi'

images = [img for img in os.listdir(image_folder) if img.endswith(".png")]
frame = cv2.imread(os.path.join(image_folder, images[0]))
height, width, layers = frame.shape

video = cv2.VideoWriter(video_name, 0, 1, (width,height))

for image in images:
    video.write(cv2.imread(os.path.join(image_folder, image)))

cv2.destroyAllWindows()
video.release()
45
BoboDarph

Merci, mais j'ai trouvé une solution alternative en utilisant ffmpeg:

def save():
    os.system("ffmpeg -r 1 -i img%01d.png -vcodec mpeg4 -y movie.mp4")

Mais merci pour votre aide :)

25
Victor