opencv视频抽帧 图片合成视频

opencv视频抽帧 video2img

# -*- coding:utf8 -*-
import os
import cv2
 
def get_frame_from_video(video_name, savepath, interval):
    filepath,filename = os.path.split(video_name)
    filename_temp = filename.split(.)[0]
    save_path_temp = os.path.join(savepath,video_name.split(/)[6])+/
    if not os.path.exists(save_path_temp):
        os.makedirs(save_path_temp)
        
    i = 0
    j = 0
    video_capture = cv2.VideoCapture(video_name)
    while True:
        success, frame = video_capture.read()
        i += 1
        if i % interval == 0:
            j += 1
            save_path = save_path_temp + filename_temp + _+ str(j) + _ + str(i) + .jpg           
            if frame is None:
                print(############img  is  None:,save_path)
                continue
            else:
                cv2.imwrite(save_path, frame)
        if not success:
            print(video is all read)
            break
 
 
if __name__ == __main__:
    
    mode = 2
    interval = 30
    savepath = save/to/path
    os.makedirs(savepath)
    
    if mode == 1:
        video_name = demo.mp4
        get_frame_from_video(video_name, savepath, interval)
    
    if mode == 2:
        video_list = demo.txt
        f = open(video_list,r)
        lines = f.readlines()
        for line in lines:
            videopath = line.strip().split( )[0]
            print(videopath,videopath)
            get_frame_from_video(videopath, savepath, interval)

图片合成视频 img2video

import cv2
import glob
 
def resize(img_array, align_mode):
    _height = len(img_array[0])
    _width = len(img_array[0][0])
    for i in range(1, len(img_array)):
        img = img_array[i]
        height = len(img)
        width = len(img[0])
        if align_mode == smallest:
            if height < _height:
                _height = height
            if width < _width:
                _width = width
        else:
            if height > _height:
                _height = height
            if width > _width:
                _width = width
 
    for i in range(0, len(img_array)):
        img1 = cv2.resize(img_array[i], (_width, _height), interpolation=cv2.INTER_CUBIC)
        img_array[i] = img1
 
    return img_array, (_width, _height)
 
def images_to_video(path):
    img_array = []
 
    for filename in glob.glob(path+/*.png):
        img = cv2.imread(filename)
        if img is None:
            print(filename + " is error!")
            continue
        img_array.append(img)
 
    img_array, size = resize(img_array, largest)
    fps = 30
    out = cv2.VideoWriter(demo.avi, cv2.VideoWriter_fourcc(*DIVX), fps, size)      #saved .avi
    #out = cv2.VideoWriter(demo.mp4, cv2.VideoWriter_fourcc(*mp4v), fps, size)  #saved .mp4
    for i in range(len(img_array)):
        out.write(img_array[i])
    out.release()
 
def main():
    path = "path/to/images"
    images_to_video(path)
 
if __name__ == "__main__":
    main()

图片合成视频 img2video

import os
import cv2
import numpy as np

path = /home/work/deploy/data/
filelist = os.listdir(path)

fps = 60 #
size = (1280, 720) 
#video = cv2.VideoWriter("VideoTest1.avi", cv2.VideoWriter_fourcc(I, 4, 2, 0), fps, size)
video = cv2.VideoWriter(blue_demo.mp4, cv2.VideoWriter_fourcc(*mp4v), fps, size)
idx=1
for item in filelist:
    if item.endswith(.jpg): 
        item = path + item
        img = cv2.imread(item)
        if img is None:
            print(img is None,item)      
            continue
        idx+=1
        video.write(img)
video.release()

img2video参考:https://blog..net/choumin/article/details/90319477

经验分享 程序员 微信小程序 职场和发展