File size: 3,732 Bytes
9d0b4d9
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
import json
import os
import random
import string
import shutil

def Traversal(filedir):
    file_list=[]
    for root,dirs,files in os.walk(filedir): 
        for file in files:
            file_list.append(os.path.join(root,file)) 
        for dir in dirs:
            Traversal(dir)
    return file_list

def randomstr(num):
    return ''.join(random.sample(string.ascii_letters + string.digits, num))

def is_img(path):
    ext = os.path.splitext(path)[1]
    ext = ext.lower()
    if ext in ['.jpg','.png','.jpeg','.bmp']:
        return True
    else:
        return False

def is_video(path):
    ext = os.path.splitext(path)[1]
    ext = ext.lower()
    if ext in ['.mp4','.flv','.avi','.mov','.mkv','.wmv','.rmvb','.mts']:
        return True
    else:
        return False

def is_imgs(paths):
    tmp = []
    for path in paths:
        if is_img(path):
            tmp.append(path)
    return tmp

def is_videos(paths):
    tmp = []
    for path in paths:
        if is_video(path):
            tmp.append(path)
    return tmp  

def is_dirs(paths):
    tmp = []
    for path in paths:
        if os.path.isdir(path):
            tmp.append(path)
    return tmp  

def writelog(path,log,isprint=False):
    f = open(path,'a+')
    f.write(log+'\n')
    f.close()
    if isprint:
        print(log)

def savejson(path,data_dict):
    json_str = json.dumps(data_dict)
    f = open(path,'w+')
    f.write(json_str)
    f.close()

def loadjson(path):
    f = open(path, 'r')
    txt_data = f.read()
    f.close()
    return json.loads(txt_data)

def makedirs(path):
    if os.path.isdir(path):
        print(path,'existed')
    else:
        os.makedirs(path)
        print('makedir:',path)

def clean_tempfiles(opt,tmp_init=True):
    tmpdir = opt.temp_dir
    if os.path.isdir(tmpdir): 
        print('Clean temp...')  
        shutil.rmtree(tmpdir)
    if tmp_init:
        os.makedirs(tmpdir)
        os.makedirs(os.path.join(tmpdir, 'video2image'))
        os.makedirs(os.path.join(tmpdir, 'addmosaic_image'))
        os.makedirs(os.path.join(tmpdir, 'replace_mosaic'))
        os.makedirs(os.path.join(tmpdir, 'mosaic_mask'))
        os.makedirs(os.path.join(tmpdir, 'ROI_mask'))
        os.makedirs(os.path.join(tmpdir, 'style_transfer'))
        # make dataset
        os.makedirs(os.path.join(tmpdir, 'mosaic_crop'))
        os.makedirs(os.path.join(tmpdir, 'ROI_mask_check'))
 
def file_init(opt):
    if not os.path.isdir(opt.result_dir):
        os.makedirs(opt.result_dir)
        print('makedir:',opt.result_dir)
    clean_tempfiles(opt,True)

def second2stamp(s):
    h = int(s/3600)
    s = int(s%3600)
    m = int(s/60)
    s = int(s%60)
    return "%02d:%02d:%02d" % (h, m, s)

def stamp2second(stamp):
    substamps = stamp.split(':')
    return int(substamps[0])*3600 + int(substamps[1])*60 + int(substamps[2])


def counttime(start_time,current_time,now_num,all_num):
    '''
    start_time,current_time: time.time()
    '''
    used_time = int(current_time-start_time)
    all_time = int(used_time/now_num*all_num)
    return second2stamp(used_time)+'/'+second2stamp(all_time)

def get_bar(percent,num = 25):
    bar = '['
    for i in range(num):
        if i < round(percent/(100/num)):
            bar += '#'
        else:
            bar += '-'
    bar += ']'
    return bar+' '+"%.2f"%percent+'%'

def copyfile(src,dst):
    try:
        shutil.copyfile(src, dst)
    except Exception as e:
        print(e)

def opt2str(opt):
    message = ''
    message += '---------------------- Options --------------------\n'
    for k, v in sorted(vars(opt).items()):
        message += '{:>25}: {:<35}\n'.format(str(k), str(v))
    message += '----------------- End -------------------'
    return message