python - 在 Linux 上将 PIL 图像转换为视频

标签 python linux python-3.x video debian

我在 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/

相关文章:

Python 解析 sys.argv 中的 $

python - python 3作业出错

python - Numpy 在新版本中将日期对象转换为 datetime64[s]

mysql - 错误 "Failed to start mariadb.service: Unit mariadb.service not found"

linux - 有关网络和微 Controller 的书籍?

python - 就地反转字典

python - 将代码从 VBA 语言转换为 Python 语言。努力检查我的工作

linux - 在 Linux/Unix 中转发 DLL 的等价物是什么?

python - 浏览器不在后续请求中发送 cookie

python - 是否可以从describe_instances()输出创建EC2实例?