В моей последней статье я поделился тем, как я обработал 833 текстовых файла, чтобы получить 833 рисунка в указанной папке. На этом задача не закончилась, я должен был представить эти цифры менее чем за минуту, и лучший способ — создать видео, частоту кадров которого я могу контролировать, чтобы оно соответствовало времени моей презентации.

В коде, описанном здесь, я создал 15-секундное видео из моих 833 изображений, используя модуль moviepy в python.

  1. Если у вас не установлен модуль moviepy в вашем python, установите его, используя pip install moviepy в вашем терминале или !pip install moviepy из ноутбука jupyter.
  2. В приведенной ниже функции мы указали аргументы, получили каждое из 833 изображений и преобразовали их в видео с именем и форматом по нашему выбору.
def images_to_video(image_folder_path: str, fps, extension:str, video_name:str, output_format:str):
    
    import os
    import moviepy.video.io.ImageSequenceClip
    
    images = [image_folder_path+'/'+img for img in os.listdir(image_folder_path) if img.endswith(extension)]
    movie_clip = moviepy.video.io.ImageSequenceClip.ImageSequenceClip(images, fps)
    movie_clip.write_videofile(video_name+output_format)

def images_to_video(image_folder_path:str, fps, extension:str, video_name:str, output_format:str): определил функцию, которая принимает следующие аргументы, указывая тип, где это необходимо:

  • image_folder_path — это каталог папки, содержащей изображения.
  • fps – количество кадров в секунду.
  • расширение — это формат интересующих нас изображений. Это может быть .jpeg, .tiff, .png и т. д. в зависимости от формата изображения.
  • video_name — это имя созданного видеофайла.
  • output_format – формат создаваемого видео. Это могут быть .mp4, .avi, .mov и т. д.

import os помогает создавать, обрабатывать (и извлекать содержимое) каталог изображений

import moviepy.video.io.ImageSequenceClip импортирует модуль, который будет использоваться для создания видео из последовательности изображений.

images = [image_folder_path+'/'+img for img in os.listdir(image_folder_path) if img.endswith(extension) создает список всех изображений с указанным расширением в указанном пути к папке. На выходе будет путь для каждого изображения, включая расширение.

movie_clip = moviepy.video.io.ImageSequenceClip.ImageSequenceClip(images, fps) преобразует список полученных изображений в видео с указанными кадрами в секунду.

movie_clip.write_videofile(video_name+output_format) записывает созданное видео в файл с указанным именем и форматом.

if __name__ =='__main__':
    images_to_video('/Users/.../Spectra Figures', 54, '.jpeg', 'Spectra_video', '.mp4');

Приведенный выше код запускает функцию, выбранная частота кадров в секунду равна 54, формат ввода — jpeg, а формат вывода — mp4.

Перед закрытием кода убедитесь, что видео полностью записано. Вот как выглядит вывод после завершения:

Мне удалось преобразовать мои 833 изображения в видео, которое длится столько секунд, сколько я хотел. Вот как это выглядит:

Надеюсь, вам понравится мой контент!