zoukankan      html  css  js  c++  java
  • 视频拆帧与组帧

    video2frame

    import os
    import cv2
    import argparse
    
    
    def video2frame(path, out_dir, interval=1, zfill=None):
        cap = cv2.VideoCapture(path)
        if zfill is None:
            zfill = len(str(int(cap.get(cv2.CAP_PROP_FRAME_COUNT))//interval))
        frame = 0
        count = 0
        while True:
            success, img = cap.read()
            if success:
                if frame % interval == 0:
                    cv2.imencode('.jpg', img)[1].tofile(
                        os.path.join(out_dir, 
                        str(count).zfill(zfill)+'.jpg'))
                    count += 1
                frame += 1
            else: break
        print('total:' + str(count))
    
    
    if __name__ == '__main__':
        parser = argparse.ArgumentParser(description='video to frame')
        parser.add_argument('--s', help='source video file')
        parser.add_argument('--t', help='target dir', default='.')
        parser.add_argument('--i', help='time interval', default=1)
        parser.add_argument('--z', help='zfill', default=0)
        args = parser.parse_args()
        if int(args.z)>0: video2frame(args.s, args.t, int(args.i), int(args.z))
        else: video2frame(args.s, args.t, int(args.i))
    

    frame2video

    import os
    import cv2
    import argparse
    from PIL import Image
    import numpy as np
    
    
    def frame2video(im_dir, video_file, fps):
        im_list = os.listdir(im_dir)
        im_list.sort(key=lambda x: int(x.split('.')[0]))
        img = Image.open(os.path.join(im_dir, im_list[0]))
        videoWriter = cv2.VideoWriter(video_file, 
            cv2.VideoWriter_fourcc('m','p','4', 'v'), 
            fps, (img.size[0], img.size[1]), True)
        for img_file in im_list:
            im_name = os.path.join(im_dir, img_file)
            frame = cv2.imdecode(np.fromfile(im_name, dtype=np.uint8), -1)
            videoWriter.write(frame)
        videoWriter.release()
        print('done')
    
    
    if __name__ == '__main__':
        parser = argparse.ArgumentParser(description='frame to video')
        parser.add_argument('--s', help='source image dir', default='.')
        parser.add_argument('--t', help='target video')
        parser.add_argument('--fps', help='fps', default=30)
        args = parser.parse_args()
        frame2video(args.s, args.t, int(args.fps))
    
  • 相关阅读:
    怎么判断一个bug到底是前端的bug还是后端的bug
    charles抓包原理
    java基础|Properties文件解析
    java基础|break、continue和return
    Java使用JSONPath解析JSON完整内容详解
    10/23/2019
    有什么好怕的
    [转]一个急刹车,过路老人吓得病发身亡 司机要担责吗?
    [转]7岁女孩练舞下腰致残,舞蹈培训机构被判赔115万
    Salesforce权限管理
  • 原文地址:https://www.cnblogs.com/xytpai/p/14089606.html
Copyright © 2011-2022 走看看