用Python的imageio从一组PNG图像中生成MP4视频

8

我如何使用imageio模块从一组png图像制作mp4视频?我尝试过以下方法:

import imageio
import glob
writer = imageio.get_writer('test.mp4', fps=20)
for png_path in glob.glob('*.png'):
    im = imageio.imread(png_path),
    writer.append_data(im[:, :, 1])
writer.close()

我还尝试用im替换了im[:, :, 1]。我做错了什么?我可以使用另一个模块。


你的图片编号是否有填充零?例如 test.001.jpg - user1767754
2个回答

16

您不需要通过im[:, :, 1]修改图像。例如,下面的代码获取指定路径下以name开头的所有图像,并创建一个名为"test.mp4"的视频文件。

fileList = []
for file in os.listdir(path):
    if file.startswith(name):
        complete_path = path + file
        fileList.append(complete_path)

writer = imageio.get_writer('test.mp4', fps=20)

for im in fileList:
    writer.append_data(imageio.imread(im))
writer.close()

所有图像必须是相同的大小,因此您应该在将它们附加到视频文件之前调整它们的大小。您可以通过fps修改fps,我只是将其设置为20,因为我遵循了您的代码。


1
如果其他人需要,可以通过以下方式安装FFmpeg插件以支持mp4视频写入: pip install imageio[ffmpeg] - DMTishler

7
您的代码与Mr K.的更好结合版本如下:
import imageio
import glob
import os
writer = imageio.get_writer('test.mp4', fps=20)
for file in glob.glob(os.path.join(path,f'{name}*.png')):
    im = imageio.imread(file)
    writer.append_data(im)
writer.close()

P.S. 在将图像附加到视频文件之前,请不要忘记添加图像缩放代码。


你可以在这里添加调整大小的代码... - Marcello DeSales

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接