如何使用python快速将大批量图片合成为视频?

引言

由于CSDN大批量导入图片容易出现乱序,本程序将支撑图片转为视频,便于用视频的方式展示文件内容。

文件目录架构

在这里插入图片描述

第一步-对图片名称进行批量修改

由于图片名称复杂多样,为便于统一化处理,增强程序的通用性,使用改名程序可以降低手动调整的复杂度。

import os

### 批量修改文件名,默认操作为将图片按0,1,2,3,,,顺序重命名
 
path_in = "./pictures"          #待批量重命名的文件夹
class_name = ".jpg"     #重命名后的文件名后缀
 
file_in = os.listdir(path_in)        #返回文件夹包含的所有文件名
num_file_in = len(file_in)          #获取文件数目
print(file_in , num_file_in)         #输出修改前的文件名
 
for i in range(0,num_file_in):
     t = str(i)
     new_name = os.rename(path_in+"/"+file_in[i],path_in+"/"+t+class_name)        #重命名文件名
 
file_out = os.listdir(path_in)
print(file_out)         #输出修改后的结果

改名之后的效果:
在这里插入图片描述

第二步-将图片合称为视频

注意此部分的图片大小仍需要手动修改或输入。

import numpy as np
import cv2
import os

### 将图片合称为视频

# 1.每张图像大小
size = (4961,7016) #这里需要手动设置!!!
print("每张图片的大小为({},{})".format(size[0],size[1]))
# 2.设置源路径与保存路径
src_path = r'./pictures/'
sav_path = r'./vedio.mp4'
# 3.获取图片总的个数
all_files = os.listdir(src_path)
index = len(all_files)
print("图片总数为:" + str(index) + "张")
# 4.设置视频写入器
fourcc = cv2.VideoWriter_fourcc(*'mp4v')#MP4格式
#完成写入对象的创建,第一个参数是合成之后的视频的名称,第二个参数是可以使用的编码器,第三个参数是帧率即每秒钟展示多少张图片,第四个参数是图片大小信息
videowrite = cv2.VideoWriter(sav_path,fourcc,1,size)#2是每秒的帧数,size是图片尺寸
# 5.临时存放图片的数组
img_array=[]
 
# 6.读取所有jpg格式的图片 (这里图片命名是0-index.jpg example: 0.jpg 1.jpg ...)
for filename in [src_path + r'{0}.jpg'.format(i) for i in range(0,index)]:
    img = cv2.imread(filename)
    if img is None:
        print(filename + " is error!")
        continue
    img_array.append(img)
# 7.合成视频 
for i in range(0,index):
    img_array[i] = cv2.resize(img_array[i],size)
    videowrite.write(img_array[i])
    print('第{}张图片合成成功'.format(i))
print('------done!!!-------')

目前程序运行已无问题,合成较为迅速,但合成后的视频清晰度相较于图片会大幅降低,如何解决此缺陷还有待探索。
合成之后的视频:

vedio

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我的键盘巨好用

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值