利用Python将多张图片合成视频

今天要作一个量子隧穿的的演示动画,在CSDN上看了不少大佬的文章,然而忙了接近半天才作好这件事。把踩过的坑记一下,同时这段代码也是值得记录的,由于之后也可能遇到相似的工做。
先上代码`python

import numpy as np
import cv2
#读取一张图片
size = (432,288)
print(size)
#完成写入对象的建立,第一个参数是合成以后的视频的名称,第二个参数是能够使用的编码器,第三个参数是帧率即每秒钟展现多少张图片,第四个参数是图片大小信息
videowrite = cv2.VideoWriter(r'F:\test.mp4',-1,20,size)#20是帧数,size是图片尺寸
img_array=[]
for filename in [r'F:\Picture\{0}.png'.format(i) for i in range(600)]:
    img = cv2.imread(filename)
    if img is None:
        print(filename + " is error!")
        continue
    img_array.append(img)
for i in range(600):
    videowrite.write(img_array[i])
print('end!')

算法的核心思想,你们的代码可能千差万别,可是思路都是同样的。
1.利用cv2.imread()读取图片文件
2.利用cv2.VideoWriter()产生一个对象
3.调用这个对象的write方法将所需的图片写进去,这样就生成了一个视频
几个大坑:
1.算法

size = (432,288)#这边是图片的尺寸,图片的尺寸得是同样的,不同的话有个博主编了一个resize函数能够去参考一下

2.imread函数没法读取有中文字符的路径,必定得是英文字符
3.videowrite = cv2.VideoWriter(r'F:\test.mp4',-1,20,size)这边的路径好像也得是英文,我试了含有中文的路径不行

我把图片命名为0~599.png
按照以上的代码文件生成了一下的视频文件
在这里插入图片描述app

   

 

Python测试和开发

相关文章
相关标签/搜索