欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

将Matplotlib可视化的连续帧的图像转化为视频(代码简单且直接可用)

程序员文章站 2022-04-02 10:56:11
在自己做的过程中,就发现有些博客的代码根本使用不了,各种奇奇怪怪的Bug。所以自己做出来之后,还是整理成一个博客吧,方便之后的人使用。参考博客:https://blog.csdn.net/choumin/article/details/90319477 【这位朋友的代码不错,但有个非常大的问题:他不是按照文件夹中的文件顺序来合成视频,而是打乱的。】我的需求是,我现在通过Matplotlib生成了几十张大小一致的图像,现在需要把这个文件夹下的图像按照顺序进行视频的合成。废话不多说,直接上代码吧~图像大...

在自己做的过程中,就发现有些博客的代码根本使用不了,各种奇奇怪怪的Bug。所以自己做出来之后,还是整理成一个博客吧,方便之后的人使用。

参考博客:https://blog.csdn.net/choumin/article/details/90319477 【这位朋友的代码不错,但有个非常大的问题:他不是按照文件夹中的文件顺序来合成视频,而是打乱的。】

我的需求是,我现在通过Matplotlib生成了几十张大小一致的图像,现在需要把这个文件夹下的图像按照顺序进行视频的合成。
废话不多说,直接上代码吧~

图像大小一致:

import cv2

def images_to_video(path):
    img_array = []
    
    imgList = os.listdir(path)
    imgList.sort(key=lambda x: int(x.split('.')[0])) 
    for count in range(0, len(imgList)): 
        filename = imgList[count]
        img = cv2.imread(path + filename)
        if img is None:
            print(filename + " is error!")
            continue
        img_array.append(img)

    height, width, layers = img.shape
    size = (width, height)
    fps = 5  # 设置每帧图像切换的速度
    out = cv2.VideoWriter('demo-jitter.avi', cv2.VideoWriter_fourcc(*'DIVX'), fps, size)
 
    for i in range(len(img_array)):
        out.write(img_array[i])
    out.release()
 
def main():
    path = "/Users/XXX/workspace-dil/output_jitter/"  # 改成你自己图片文件夹的路径
    images_to_video(path)
 
if __name__ == "__main__":
    main()

注意⚠️:要记得改图片文件夹的路径!

图像大小不一致:

参考上面的参考博客的内容,自己将图片大小改为一致。

如果本文对你有用,请点赞、收藏、评论吧!~留下你的足迹????给我写博客多一点的鼓励哈哈哈!

本文地址:https://blog.csdn.net/hahameier/article/details/110915953