python将图片合并为视频

# -*- coding: utf-8 -*-
"""
Created on Sun Sep 25 21:51:56 2022

@author: in
"""
#图片合并为视频
import cv2
import os
from natsort import ns, natsorted

def Png_video(path,fps,ph_type):
    # path = r"D:\20240225-1k\transient\pngvideo" #修改路径(照片)
    ls=[]#存储照片的信息
    files  = os.listdir(path)#返回指定的文件夹包含的文件或文件夹的名字的列表。
    file_name = natsorted(files,alg=ns.PATH)#要加alg=ns.PATH参数才和windows系统名称排序一致
    num = 0
    for name in file_name:
        splitext = os.path.splitext(name)#使用 splitext 函数分割后缀与文件名
        # if  splitext[1] == '.png': #只保存png的图片,可对应修改
        if  splitext[1] == ph_type: #只保存png的图片,可对应修改
            fname = os.path.join(path, name)#将文件名和路径整合到一起
            num += 1
            print(num,"→",fname)
            ls.append(fname)
    print(f"共有{num}张照片待合并")
    
    
    # 视频控制
    # mage = cv2.imread('xxx.jpg')
    # size = image.shape
    # w = size[1] #宽度
    # h = size[0] #高度
    # print(ls[5])
    # fps = 30#控制快慢,越小越慢
    size = cv2.imread(ls[0]).shape[1::-1] #获取图像尺寸(宽度,高度)
    print(f"图片的像素→ 宽:{size[0]}像素、高:{size[1]}像素")#输出图像宽度、高度
    video_path = path+'\\'+"0result.mp4v"  #文件名可以修改
    videowriter = cv2.VideoWriter(video_path,-1, fps, size)
    
    
    for x in ls:
        img = cv2.imread(x)
        videowriter.write(img)
    videowriter.release()
    print(f'完成制作,已保存至{video_path}')
   
if __name__ == '__main__':
    #仅修改此处,第一个参数为路径,第二个参数为视频帧率,第三个参数为图片类型,路径不允许要中文
    Png_video(r"D:\20240225-1k\transient\pngvideo", 30,".png")


53 → D:\20240225-1k\transient\pngvideo\animation-2_0052.png
54 → D:\20240225-1k\transient\pngvideo\animation-2_0053.png
55 → D:\20240225-1k\transient\pngvideo\animation-2_0054.png
56 → D:\20240225-1k\transient\pngvideo\animation-2_0055.png
57 → D:\20240225-1k\transient\pngvideo\animation-2_0056.png
58 → D:\20240225-1k\transient\pngvideo\animation-2_0057.png
59 → D:\20240225-1k\transient\pngvideo\animation-2_0058.png
60 → D:\20240225-1k\transient\pngvideo\animation-2_0059.png
共有60张照片待合并
图片的像素→ 宽:815像素、高:558像素
完成制作,已保存至D:\20240225-1k\transient\pngvideo\0result.mp4v



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值