图片序列转换成视频
最近一直在找一个工具,能够将一堆图片转化成视频。网上找了一些小软件,还有 win10 的照片自带的视频制作功能,都不是很满意。
又不想下载那些专业的视频剪辑软件大材小用。
然后找到了ffmpeg这个非常出名非常常用的多媒体编解码库,看了下文档试着用了下,它确实可以完成上述功能,但是命令行对输入图片的命名有规定(文件名必须开头相同、且包含连续编号),并且windows下的编译版不支持Pattern type 'glob'。
先尝试了用python写了批量重命名然后调用ffmpeg的命令,然后发现还需要相同的分辨率才行。。。
最后决定参照网上的其他使用OpenCV(OpenCV在视频处理功能底层也是用的ffmpeg)的博客自己写一个。
这里先把完整代码和使用说明贴出来:
import os, sys
import cv2
import numpy as np
import argparse
imgs_path = 'C:\\'
target_size = (1280, 720)
target_fps = 1.0
# 输出文件名
target_video = 'out.mp4'
# 是否保存 resize 的中间图像
saveResizeFlag = False
img_types = ('.bmp', '.dib', '.png', '.jpg', '.jpeg', '.pbm', '.pgm', '.ppm', '.tif', '.tiff')
# 不存在则创建目录
def mkdir(path):
if not os.path.exists(path):
os.mkdir(path)
# 将图片等比例缩放,不足则填充黑边
def resizeAndPadding(img):
size = img.shape
h, w = size[0], size[1]
target_h, target_w = target_size[1], target_size[0]
# 确定缩放的尺寸