Python 使用matplotlib批量绘图并合成视频

该博客介绍了一种方法,通过matplotlib绘制图像并利用opencv将其转换为MP4视频。示例代码展示了如何生成散点图并保存为图片,然后用这些图片创建视频,设定帧率和视频尺寸,并使用VideoWriter类进行编码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

实现思路

1.导入matplotlib,绘制图像,并将图片存储为bgr图像

2.导入cv2,读取bgr图像,最终存储为MP4格式文件

示例:

import numpy as np
import matplotlib
matplotlib.use('agg')
import matplotlib.pyplot as plt
from matplotlib.backends.backend_agg import FigureCanvasAgg
import cv2
import PIL.Image as Image

fps =20# 视频帧率
fourcc = cv2.VideoWriter_fourcc(*'XVID')
video_path='C:/Users/test/Desktop/picture2video.mp4'
videoWriter = cv2.VideoWriter(video_path, fourcc, fps, (2400,800)) #尺寸为(2400,800)与图片尺寸保持一致


for i in range(0,200):
    '''绘图'''
    #1. 数据生成
    x = np.random.normal(0, 1, 10)
    y = np.random.normal(0, 1, 10)
	#2.画布设置:
    plt.figure(figsize=(30, 10), dpi=80)#尺寸为(30*80,10*80)与视频尺寸保持一致
    axes=plt.subplot2grid((1,1), (0,0), facecolor='w')
    #3.绘制散点图
    plt.scatter(x,y, c='red', s=500)
    #4.保存图片
    canvas = FigureCanvasAgg(plt.gcf())
    # 绘制图像
    canvas.draw()
    # 获取图像尺寸
    w, h = canvas.get_width_height()
    # 解码string 得到argb图像
    buf = np.fromstring(canvas.tostring_argb(), dtype=np.uint8)
    # 重构成w h 4(argb)图像
    buf.shape = (w, h, 4)
    # 转换为 RGBA
    buf = np.roll(buf, 3, axis=2)
    # 得到 Image RGBA图像对象 (需要Image对象的同学到此为止就可以了)
    image = Image.frombytes("RGBA", (w, h), buf.tostring())
    # 转换为numpy array rgba四通道数组
    image = np.asarray(image)
    # 转换为rgb图像
    rgb_image = image[:, :, :3]
    # 转换为bgr图像
    r,g,b=cv2.split(rgb_image)
    img_bgr = cv2.merge([b,g,r])
    '''生成视频'''
    videoWriter.write(img_bgr)
    '''释放内存'''
    plt.clf()
    plt.close()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值