-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathgenerateDistortedPositives.py
executable file
·64 lines (55 loc) · 2.23 KB
/
generateDistortedPositives.py
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
"""
# python3 ./generateDistortedPositives.py -infiles 'sample_pos*'
python3 ../generateDistortedPositives.py -infiles 'positive_samples/*' -width 37 -height 10
Check with
opencv_createsamples -w 37 -h 10 -vec merged.vec
"""
import argparse
import glob
import os
import shutil
import subprocess
import mergevec
import sys
parser = argparse.ArgumentParser()
parser.add_argument('-infiles', action='store', dest='infiles',
help='filenames of positive images')
parser.add_argument('-width', action='store', dest='width',
help='width of image in pixels', default='37')
parser.add_argument('-height', action='store', dest='height',
help='height of image in pixels', default='10')
parser.add_argument('-maxxangle', action='store', dest='maxxangle',
help='maxrot x', default='0.7')
parser.add_argument('-maxyangle', action='store', dest='maxyangle',
help='maxrot y', default='0.2')
parser.add_argument('-maxzangle', action='store', dest='maxzangle',
help='maxrot z', default='0.2')
parser.add_argument('-num', action='store', dest='num',
help='number of distorted images to generate', default='1000')
args = parser.parse_args()
cwd = os.getcwd()
vecdir = cwd+'/VecFilesTmp'
print(vecdir)
try:
shutil.rmtree(vecdir)
except:
pass
os.makedirs(vecdir)
names=glob.glob(args.infiles)
print(names)
n_per_sample = int(int(args.num)/len(names))+1
#generate shaken&stirren new positive samples in vec files
for i, name in enumerate(names):
command = 'opencv_createsamples -vec ' + vecdir+'/'+str(i)+'vec.vec ' +\
'-img ' + name + ' ' +\
'-maxxangle ' + args.maxxangle + ' ' +\
'-maxyangle ' + args.maxyangle + ' ' +\
'-maxzangle ' + args.maxzangle + ' ' +\
'-num ' + str(n_per_sample) + ' ' +\
'-w ' + args.width + ' ' +\
'-h ' + args.height + ' '
subprocess.call(command, shell=True)
# merge vec files
subprocess.call('python ~/Dropbox/Apu/mergevec.py -v VecFilesTmp -o merged.vec', shell=True)
#submergevec.merge_vec_files('VecFilesTmp', 'merged.vec')
print ("generated number of positive samples is: "+str(n_per_sample*len(names)))