Python+opencv图片合成视频

                                                             Python+opencv图片合成视频
1、安装opencv扩展
    pip install opencv-python
2、图片合成视频代码
    import os
    import cv2
    import time

    filelist = []
    #(1)
    #path = 'C:/Users/admin/Pictures/scence/'    #(1)最后一个 / 不能少,因为后面用到了它拼接出文件的全路径;或者可以少#(2),在拼接全路径的时候再拼接上一个 / 即可
    #(2)
    path = 'C:/Users/admin/Pictures/scence'
    filelist = os.listdir(path) #获取该目录下的所有文件名  ['aaa.jpg',...,'zzz.jpg']

    '''
    fps:
    帧率:1秒钟有n张图片写进去[控制一张图片停留5秒钟,那就是帧率为1,重复播放这张图片5次]
    如果文件夹下有50张 534*300的图片,这里设置1秒钟播放5张,那么这个视频的时长就是10秒
    '''
    fps = 5
    size = (534, 300)   #这个非常重要,图片的分辨率就是这个视频合成的分辨率,这个分辨率不是瞎写的,如果你的文件夹下没有相同分辨率的图片,那么合成的视频只有几kb,即为空视频。
    file_path = "C:/Users/admin/Videos/test/" + str(int(time.time())) + ".avi"  #只能合成avi后缀视频
    fourcc = cv2.VideoWriter_fourcc('I','4','2','0')

    video = cv2.VideoWriter( file_path, fourcc, fps, size )

    for item in filelist:
        if item.endswith('.jpg'):   #判断图片后缀是否是.jpg
            #(1)
            #item = path+item        #全路径地址(c:/../scence/haha.jpg)
            #(2)
            item = path + '/' + item  # 全路径地址(c:/../scence/haha.jpg)
            img = cv2.imread(item)  #使用opencv读取图像,直接返回numpy.ndarray 对象,通道顺序为BGR ,注意是BGR,通道值默认范围0-255。
            video.write(img)        #把图片写进视频

    video.release() #释放
    #cv2.destroyAllWindows()    #关闭图片窗口
3、注意
    (1)、理解fps概念,即一秒钟播放多少张图片;
    (2)、size不是随意设置的,size的大小即为文件夹中图片的分辨率大小,否则视频大小为几kb,合成失败。
   

你可能感兴趣的:(Python)