В моей последней статье я поделился тем, как я обработал 833 текстовых файла, чтобы получить 833 рисунка в указанной папке. На этом задача не закончилась, я должен был представить эти цифры менее чем за минуту, и лучший способ — создать видео, частоту кадров которого я могу контролировать, чтобы оно соответствовало времени моей презентации.
В коде, описанном здесь, я создал 15-секундное видео из моих 833 изображений, используя модуль moviepy в python.
- Если у вас не установлен модуль moviepy в вашем python, установите его, используя
pip install moviepy
в вашем терминале или!pip install moviepy
из ноутбука jupyter. - В приведенной ниже функции мы указали аргументы, получили каждое из 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 изображения в видео, которое длится столько секунд, сколько я хотел. Вот как это выглядит:
Надеюсь, вам понравится мой контент!