File size: 2,178 Bytes
63f3cf2
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
# -*- coding: UTF-8 -*-
'''=================================================
@Project -> File   localizer -> image_to_video
@IDE    PyCharm
@Author fx221@cam.ac.uk
@Date   07/09/2023 20:15
=================================================='''
import cv2
import os
import os.path as osp

import numpy as np
from tqdm import tqdm
import argparse

from tools.common import resize_img

parser = argparse.ArgumentParser(description='Image2Video', formatter_class=argparse.ArgumentDefaultsHelpFormatter)
parser.add_argument('--image_dir', type=str, required=True)
parser.add_argument('--video_path', type=str, required=True)
parser.add_argument('--height', type=int, default=-1)
parser.add_argument('--fps', type=int, default=30)


def imgs2video(img_dir, video_path, fps=30, height=1024):
    img_fns = os.listdir(img_dir)
    # print(img_fns)
    img_fns = [v for v in img_fns if v.split('.')[-1] in ['jpg', 'png']]
    img_fns = sorted(img_fns)
    # print(img_fns)
    # 输出视频路径
    # fps = 1

    img = cv2.imread(osp.join(img_dir, img_fns[0]))
    if height == -1:
        height = img.shape[1]
    new_img = resize_img(img=img, nh=height)
    img_size = (new_img.shape[1], height)

    # fourcc = cv2.cv.CV_FOURCC('M','J','P','G')#opencv2.4
    # fourcc = cv2.VideoWriter_fourcc('I','4','2','0')

    fourcc = cv2.VideoWriter_fourcc(*'MP4V')  # 设置输出视频为mp4格式
    # fourcc = cv2.VideoWriter_fourcc('M', 'P', '4', 'V')  # 设置输出视频为mp4格式
    videoWriter = cv2.VideoWriter(video_path, fourcc, fps, img_size)

    for i in tqdm(range(3700, len(img_fns)), total=len(img_fns)):
        # fn = img_fns[i].split('-')
        im_name = os.path.join(img_dir, img_fns[i])
        print(im_name)
        frame = cv2.imread(im_name, 1)
        frame = np.flip(frame, 0)

        frame = cv2.resize(frame, dsize=img_size)
        # print(frame.shape)
        # exit(0)
        cv2.imshow("frame", frame)
        cv2.waitKey(1)
        videoWriter.write(frame)

    videoWriter.release()


if __name__ == '__main__':
    args = parser.parse_args()
    imgs2video(img_dir=args.image_dir, video_path=args.video_path, fps=args.fps, height=args.height)