превратить изображения PIL в видео в Linux - PullRequest
0 голосов
/ 19 сентября 2018

Я использую Python 3 в Debian Linux, я использую библиотеку изображений Python (разветвление подушки) для создания последовательности изображений, я хотел бы вывести изображения в виде видео в широко поддерживаемом формате (не волнуетслишком много чего, пока это что-то, что я могу просмотреть в VLC и импортировать в программное обеспечение для редактирования видео.

Как я могу это сделать?

1 Ответ

0 голосов
/ 19 сентября 2018

Одним из решений является использование opencv, данные могут быть переданы из PIL в opencv через numpy.Схема кода, который я использовал:

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

Примечания:

  • Я получил базовую технику от https://blog.extramaster.net/2015/07/python-pil-to-mp4.html)
  • Экстрамастер заявил, что передача -1 в качестве параметра кодека вызовет выбор кодекасписок, который не работал для меня.
  • В итоге мне пришлось использовать Debian Buster (= тестирование на момент написания), так как в более ранних выпусках отсутствовал пакет python3-opencv.
  • ЭтоКажется, что если размеры вашего кадра не совпадают с размерами видео, opencv молча не сможет добавить кадр.
...