Python-opencv:将文件夹中的图片序列按顺序转化为视频

Python-opencv:图片集转化为视频

有时需要将图片集转化为视频进行后处理或者进行效果演示,所以在这里总结了一版的代码供后续使用。

代码

注:代码主要解决了,视频帧没有按照顺序转化的问题

import cv2
import os

def pic_to_vid(P, V, F):
    path = P
    video_dir = V
    fps = F
    in_img = os.listdir(path)
    # get_key是sotred函数用来比较的元素,该处用lambda表达式替代函数。
    img_key = lambda i: int(i.split('.')[0])
    img_sorted = sorted(in_img, key=img_key)
    # 需要转为视频的图片的尺寸,这里必须和图片尺寸一致
    # w,h of image
    img = cv2.imread(os.path.join(path, img_sorted[0]))
    img_size = (img.shape[1], img.shape[0])
    # 获取名称
    seq_name = os.path.dirname(path).split('/')[-1]
    video_dir = os.path.join(video_dir, seq_name + '.avi')
    #print(img_size)
    video = cv2.VideoWriter(video_dir, cv2.VideoWriter_fourcc('M', 'J', 'P', 'G'), fps, img_size)

    for item in img_sorted:
        img = os.path.join(path, item)
        img = cv2.imread(img)
        video.write(img)

    video.release()
    cv2.destroyAllWindows()
    print('全部图片已全部转化为视频。')

#主函数
if __name__ == '__main__':
    # 输入图片路径
    path = '/data_1T/xzy/NBA_dataset/NBA_dataset/videos/21800960/16'
    # 输出视频路径
    video_dir = '/home/xzy/QT/ayu'
    # 跟自己的需求设置帧率
    fps = 12
    # 传入函数,转化视频
    pic_to_vid(path, video_dir, fps)

转化完成!!!


输入的图片集:

在这里插入图片描述
输出的视频:

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/Ayu147258/article/details/127072885