我在 Debian Linux 上使用 python 3,我正在使用 python 图像库 (pillow fork) 生成一系列图像,我想以广泛支持的格式将图像输出为视频(不关心太多了,只要是我可以在 VLC 中查看并导入到视频编辑软件中的东西即可)。
我该怎么做?
最佳答案
一个解决方案是使用 opencv,数据可以通过 numpy 从 PIL 桥接到 opencv。我使用的代码概要是。
import numpy as np
from PIL import Image, ImageDraw
import cv2
videodims = (100,100)
fourcc = cv2.VideoWriter_fourcc(*'avc1')
video = cv2.VideoWriter("test.mp4",fourcc, 60,videodims)
img = Image.new('RGB', videodims, color = 'darkred')
#draw stuff that goes on every frame here
for i in range(0,60*60):
imtemp = img.copy()
# draw frame specific stuff here.
video.write(cv2.cvtColor(np.array(imtemp), cv2.COLOR_RGB2BGR))
video.release()
注意事项:
- 如果使用 pip,您需要安装相关包,这些包是“opencv-python”、“pillow”和“numpy”。如果使用 debian 软件包,这些软件包是“python3-opencv”、“python3-pil”和“python3-numpy”。
- 我从 https://blog.extramaster.net/2015/07/python-pil-to-mp4.html 得到了基本技术)
- Extramaster 声称传递 -1 作为编解码器参数会弹出一个编解码器选择列表,这对我不起作用。
- 由于早期版本缺少 python3-opencv 软件包,我最终不得不使用 Debian buster(=在撰写本文时进行测试)。
- 似乎如果您的帧的尺寸与视频的尺寸不匹配,opencv 将默默地无法添加帧。
关于python - 在 Linux 上将 PIL 图像转换为视频,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52414148/