Создание видео из изображений OpenCV в Python

В этом уроке мы узнаем, как создать видео из массивов numpy изображений.

Мы рассмотрим два примера. Первый считывает изображения из файловой системы и создает видео. Второй пример создает видео непосредственно из программно сгенерированных массивов numpy в Python.

Чтобы создать видео из массивов изображений, выполните следующую последовательность шагов:

  1. Инициализируйте Video Writer, указав следующие элементы:
    • имя выходного видео файла;
    • код fourcc, определяющий кодек;
    • количество кадров в секунду;
    • размер кадра видео.
  2. Запишите каждый массив изображений в объект Video Writer.
  3. Отпустите Video Writer.
  • Имя выходного видео файла:
  • код fourcc, определяющий кодек;
  • количество кадров в секунду;
  • размер кадра видео.

Пример 1

В этом примере мы будем читать изображения, находящиеся в папке, одно за другим. Затем мы будем использовать Video Writer для записи каждого изображения в цикле в выходной файл видео.

import cv2
import numpy as np
import glob

frameSize = (500, 500)

out = cv2.VideoWriter('output_video.avi',cv2.VideoWriter_fourcc(*'DIVX'), 60, frameSize)

for filename in glob.glob('D:/images/*.jpg'):
    img = cv2.imread(filename)
    out.write(img)

out.release()
  • output_video.avi – это имя файла вывода видео.
  • cv2.VideoWriter_fourcc (* ‘DIVX’) – это кодек.
  • 60 – это количество кадров в секунду. Итак, 60 изображений нужно использовать для создания видео длительностью в одну секунду. Вы можете изменить это значение в соответствии с требованиями.
  • frameSize = (500, 500) определяет ширину и высоту выходного видео.

В приведенной выше программе цикл for считывает все файлы .jpg один за другим в массив numpy с помощью cv2.imread(). И массив numpy изображений записывается в видеофайл с помощью Video Writer.

Обратите внимание, что порядок изображений, записываемых в видеофайл, зависит от того, как glob читает файлы из папки.

Вы можете контролировать порядок файлов, которые вы читаете в цикле for, тем самым управляя порядком изображений в видео.

Пример 2: создание из множества массивов

В этом примере мы создадим массив из нескольких массивов. Затем мы воспользуемся им:

import cv2
import numpy as np
 

frameSize = (500, 500)

out = cv2.VideoWriter('output_video.avi',cv2.VideoWriter_fourcc(*'DIVX'), 60, frameSize)

for i in range(0,255):
    img = np.ones((500, 500, 3), dtype=np.uint8)*i
    out.write(img)

out.release()

В этом руководстве на примерах Python мы узнали, как записывать изображения в видеофайл с помощью библиотеки Python OpenCV cv2.

2 комментария для “Создание видео из изображений OpenCV в Python

  1. делаю из png по первому примеру. на выходе получается пустой output_video.avi с размером 5686 байт. Может во время правки кода я ошибку внес?

    import cv2
    import numpy as np
    import glob

    frameSize = (500, 500)

    out = cv2.VideoWriter(‘output_video.avi’,cv2.VideoWriter_fourcc(*’DIVX’), 60, frameSize)

    count = 0

    for filename in glob.glob(‘2/*.png’):
    img = cv2.imread(filename)
    out.write(img)
    print(count,filename)
    count += 1

    out.release()

  2. Есть способ при добавлении каждого кадра добавлять еще и один звук(например случайную ноту)? как это возможно реализовать средствами OpenCV?

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *