如何用python中的图像制作电影

时间:2017-07-06 11:22:10

标签: python image screenshot

我目前尝试用图片制作电影,但我找不到任何有用的东西。

到目前为止,这是我的代码:

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()

4 个答案:

答案 0 :(得分:36)

您可以考虑使用像ffmpeg这样的外部工具将图像合并到电影中(请参阅答案here),或者您可以尝试使用OpenCv将图像合并到电影中,如示例here

我附加在剪切的代码下面我曾经用来组合来自名为" images"的文件夹中的所有png文件。进入视频。

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()

答案 1 :(得分:24)

谢谢,但我找到了一个使用ffmpeg的替代解决方案:

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

但是谢谢你的帮助:)

答案 2 :(得分:8)

这是使用moviepy的最小示例。对我来说,这是最简单的解决方案。

import os
import moviepy.video.io.ImageSequenceClip
image_folder='folder_with_images'
fps=1

image_files = [image_folder+'/'+img for img in os.listdir(image_folder) if img.endswith(".png")]
clip = moviepy.video.io.ImageSequenceClip.ImageSequenceClip(image_files, fps=fps)
clip.write_videofile('my_video.mp4')

答案 3 :(得分:3)

我使用ffmpeg-python绑定。您可以找到更多信息here

import ffmpeg
(
    ffmpeg
    .input('/path/to/jpegs/*.jpg', pattern_type='glob', framerate=25)
    .output('movie.mp4')
    .run()
)