文件夹中所有图片合成视频 您所在的位置:网站首页 怎么把文件夹变成图片格式 文件夹中所有图片合成视频

文件夹中所有图片合成视频

2024-06-01 14:03| 来源: 网络整理| 查看: 265

使用背景

有时候我们需要把很多的图片合成视频,或者说自己写一个脚本去加快或者放慢视频。我写这个的目的,是因为我有一个模型只能处理图片,但是我想看视频的处理效果,于是我先视频变成图片,然后处理好后把图片变成视频,这样就解决需求啦~

十分详细代码实现

首先先说明需要自己修改的参数,代码如下:

if __name__ == '__main__': im_dir = ' ' # 图片帧存放路径,这里写一个文件夹 dir_list=os.listdir(im_dir) fps = 20 # 设置一个帧率,每秒钟帧数越多,视频就越快 dir_video=' ' #合成后视频的存放视频 video_dir = dir_video + '.avi' frame2video(im_dir, video_dir, fps)

然后再设置一个方法,来储存截取后的图片:

def frame2video(im_dir, video_dir, fps): im_list = os.listdir(im_dir) im_list.sort(key=lambda x: int(x.replace("frame", "").split('.')[0])) img = Image.open(os.path.join(im_dir, im_list[0])) img_size = img.size # 获得图片分辨率,文件夹下的图片分辨率需要一致,要是不一致可以写一个if函数resize一下~ fourcc = cv2.VideoWriter_fourcc(*'XVID') # opencv版本是3 videoWriter = cv2.VideoWriter(video_dir, fourcc, fps, img_size) for i in im_list: im_name = os.path.join(im_dir + i) frame = cv2.imdecode(np.fromfile(im_name, dtype=np.uint8), -1) videoWriter.write(frame) videoWriter.release() print('Done')

大功告成,下面是能运行的代码(修改时间5月7日)

import cv2 import os import numpy as np from PIL import Image def frame2video(im_dir, video_dir, fps): im_list = os.listdir(im_dir) im_list.sort(key=lambda x: int(x.replace("frame", "").split('.')[0])) img = Image.open(os.path.join(im_dir, im_list[0])) img_size = img.size fourcc = cv2.VideoWriter_fourcc(*"mp4v") # opencv版本是3 videoWriter = cv2.VideoWriter(video_dir, fourcc, fps, img_size) for i in im_list: im_name = os.path.join(im_dir +'\\'+ i) frame = cv2.imdecode(np.fromfile(im_name, dtype=np.uint8), -1) videoWriter.write(frame) videoWriter.release() print('Done') if __name__ == '__main__': im_dir =r'F:\put_imgs1' dir_list=os.listdir(im_dir) fps = 30 dir_video='F:\put_videos_3s' video_dir = dir_video +'\\'+ '.mp4' #因为我要存的是mp4格式,所以改了点点代码 frame2video(im_dir, video_dir, fps)


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有