之前的文章中小编给大家介绍过了将视频拆解成图片的方法,而这次则是要讲解和它相对的一个知识,那就是用多张图片来合成视频 。下文有详细的代码示例和步骤解析,感兴趣的话就一起往下看看吧 。
文章插图
1.首先就是要导入模块,生成视频需要使用opencv库,而处理文件夹及其文件需要用到os内置模块 。而numpy库是用来完成格式转换的,示例如下:
import cv2import osimport numpy as npfrom PIL import Image【Python如何用图片合成视频?Python怎么将多张图片合成视频】2.第二步则是要创建一个文件夹,该文件夹下面只能够保存生成视频所需的图片,并且这些图片的分辨率都要是一样的 。而文件按照名称大小的排序,则决定了合成视频时它所在的位置,也就是处在视频哪一秒 。
3.第三步就是要定义一个函数,函数内三个参数表示的意思就是图片路径、视频路径以及视频每秒帧数 。先用os模块获取到路径下全部图片,然后使用sort()方法来让其按照数字大小排序 。之后就是调用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
4.第四步则是需要先指定视频编码格式并返回一个对象,然后用VideoWriter()方法加上视频保存路径、编码格式对象、帧率以及图片分辨率来构建出一个视频写入对象,也可以称之为空的视频 。这个视频的大小和图片分辨率相同,代码如下:
fourcc = cv2.VideoWriter_fourcc(*'XVID') #opencv版本是3videoWriter = cv2.VideoWriter(video_dir, fourcc, fps, img_size)5.第五步需要使用for循环迭代图片列表,在循环中用变量拼接图片名称,然后调用fromfile()方法获取到图片并且将其转为八位图像格式 。之后再使用write()方法将其写入到视频对象中,循环结束就表示视频已经有足够的图片了,示例如下:
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)6.最后则是调用该函数并且传入指定参数即可,代码示例如下所示:
if __name__ == '__main__': frame2video (r'E:\img', r'E:\2.mp4'302)以上就是关于“Python如何用图片合成视频?Python怎么将多张图片合成视频”的全部内容了,希望对你有所帮助 。
推荐阅读
- Python中rindex函数是什么?Python中的rindex的使用方法
- 付翔最后的结局如何 简单介绍一下剧情
- 养生谷胶粥的做法 如何做养生谷胶粥
- Python匿名函数的命名规则是什么?Python匿名函数命名的规则详解
- 如何挑选化妆刷 挑选化妆刷的方法
- 如何在Python中使用del语句删除变量?使用del语句删除变量的方法
- Python视频分解成图片如何实现?Python怎么将视频转为图片保存
- Python语言是什么语言?Python语言属于哪种语言?
- 如何停止spyder编辑器中运行的程序?如何停止spyder中运行的Python程序
- 白灼虾蘸料怎么调 白灼虾蘸料如何调