annotate scripts/init_tracking.py @ 747:d45ab817ee11 dev

added script to initialize tracking (copying and setting up basic files)
author Nicolas Saunier <nicolas.saunier@polymtl.ca>
date Fri, 02 Oct 2015 11:29:43 -0400
parents
children 2faabcbde2c4
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
747
d45ab817ee11 added script to initialize tracking (copying and setting up basic files)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
1 #! /usr/bin/env python
d45ab817ee11 added script to initialize tracking (copying and setting up basic files)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
2
d45ab817ee11 added script to initialize tracking (copying and setting up basic files)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
3 import sys, argparse, os.path, storage, utils
d45ab817ee11 added script to initialize tracking (copying and setting up basic files)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
4 from cvutils import getImagesFromVideo
d45ab817ee11 added script to initialize tracking (copying and setting up basic files)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
5 from matplotlib.pyplot import imsave
d45ab817ee11 added script to initialize tracking (copying and setting up basic files)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
6
d45ab817ee11 added script to initialize tracking (copying and setting up basic files)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
7 # could try to guess the video
d45ab817ee11 added script to initialize tracking (copying and setting up basic files)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
8 # check if there is already a tracking.cfg file
d45ab817ee11 added script to initialize tracking (copying and setting up basic files)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
9
d45ab817ee11 added script to initialize tracking (copying and setting up basic files)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
10 parser = argparse.ArgumentParser(description='The program initilizes the files for tracking: copy tracking.cfg, sets up with the video filename, generates a frame image (frame.png) and prints the next commands')
d45ab817ee11 added script to initialize tracking (copying and setting up basic files)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
11
d45ab817ee11 added script to initialize tracking (copying and setting up basic files)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
12 parser.add_argument('-i', dest = 'videoFilename', help = 'filename of the video sequence', required = True)
d45ab817ee11 added script to initialize tracking (copying and setting up basic files)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
13
d45ab817ee11 added script to initialize tracking (copying and setting up basic files)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
14 args = parser.parse_args()
d45ab817ee11 added script to initialize tracking (copying and setting up basic files)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
15
d45ab817ee11 added script to initialize tracking (copying and setting up basic files)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
16 # assumes tracking.cfg is in the parent directory to the directory of the traffic intelligence python modules
d45ab817ee11 added script to initialize tracking (copying and setting up basic files)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
17 matchingPaths = [s for s in sys.path if 'traffic-intelligence' in s]
d45ab817ee11 added script to initialize tracking (copying and setting up basic files)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
18 #if len(matchingPaths) > 1:
d45ab817ee11 added script to initialize tracking (copying and setting up basic files)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
19 # print('Too many matching paths for Traffic Intelligence modules: {}'.format(matchingPaths))
d45ab817ee11 added script to initialize tracking (copying and setting up basic files)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
20 if len(matchingPaths) == 0:
d45ab817ee11 added script to initialize tracking (copying and setting up basic files)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
21 print('No environment path to Traffic Intelligence modules.\nExiting')
d45ab817ee11 added script to initialize tracking (copying and setting up basic files)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
22 sys.exit()
d45ab817ee11 added script to initialize tracking (copying and setting up basic files)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
23 else:
d45ab817ee11 added script to initialize tracking (copying and setting up basic files)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
24 directoryName = matchingPaths[0]
d45ab817ee11 added script to initialize tracking (copying and setting up basic files)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
25 if directoryName.endswith('/'):
d45ab817ee11 added script to initialize tracking (copying and setting up basic files)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
26 directoryName = directoryName[:-1]
d45ab817ee11 added script to initialize tracking (copying and setting up basic files)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
27 if os.path.exists(directoryName+'/../tracking.cfg') and not os.path.exists('./tracking.cfg'):
d45ab817ee11 added script to initialize tracking (copying and setting up basic files)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
28 f = storage.openCheck(directoryName+'/../tracking.cfg')
d45ab817ee11 added script to initialize tracking (copying and setting up basic files)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
29 out = storage.openCheck('./tracking.cfg', 'w')
d45ab817ee11 added script to initialize tracking (copying and setting up basic files)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
30 for l in f:
d45ab817ee11 added script to initialize tracking (copying and setting up basic files)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
31 if 'video-filename' in l:
d45ab817ee11 added script to initialize tracking (copying and setting up basic files)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
32 tmp = l.split('=')
d45ab817ee11 added script to initialize tracking (copying and setting up basic files)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
33 out.write(tmp[0]+'= '+args.videoFilename+'\n')
d45ab817ee11 added script to initialize tracking (copying and setting up basic files)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
34 elif 'database-filename' in l:
d45ab817ee11 added script to initialize tracking (copying and setting up basic files)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
35 tmp = l.split('=')
d45ab817ee11 added script to initialize tracking (copying and setting up basic files)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
36 out.write(tmp[0]+'= '+utils.removeExtension(args.videoFilename)+'.sqlite\n')
d45ab817ee11 added script to initialize tracking (copying and setting up basic files)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
37 else:
d45ab817ee11 added script to initialize tracking (copying and setting up basic files)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
38 out.write(l)
d45ab817ee11 added script to initialize tracking (copying and setting up basic files)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
39 f.close()
d45ab817ee11 added script to initialize tracking (copying and setting up basic files)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
40 out.close()
d45ab817ee11 added script to initialize tracking (copying and setting up basic files)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
41 print('Configuration file tracking.cfg successfully copied to the current directory with video and database filename adapted')
d45ab817ee11 added script to initialize tracking (copying and setting up basic files)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
42
d45ab817ee11 added script to initialize tracking (copying and setting up basic files)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
43 # extract image from video
d45ab817ee11 added script to initialize tracking (copying and setting up basic files)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
44 image = getImagesFromVideo(args.videoFilename, saveImage = True, outputPrefix = 'frame')
d45ab817ee11 added script to initialize tracking (copying and setting up basic files)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
45 print('first video frame successfully copied to the current directory')
d45ab817ee11 added script to initialize tracking (copying and setting up basic files)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
46
d45ab817ee11 added script to initialize tracking (copying and setting up basic files)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
47 # next commands
d45ab817ee11 added script to initialize tracking (copying and setting up basic files)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
48 print('--------------------------------------\nHere are a sample of the next command to compute the homography,\ntrack features, group them in objects and display object trajectories\n--------------------------------------')
d45ab817ee11 added script to initialize tracking (copying and setting up basic files)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
49 print('compute_homography -i [frame.png] -w [world_image] -n [npoints] -u [unit_per_pixel]')
d45ab817ee11 added script to initialize tracking (copying and setting up basic files)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
50 print('feature-based-tracking tracking.cfg --tf')
d45ab817ee11 added script to initialize tracking (copying and setting up basic files)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
51 print('feature-based-tracking tracking.cfg --gf')
d45ab817ee11 added script to initialize tracking (copying and setting up basic files)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
52 print('display-trajectories --cfg tracking.cfg -t object')