Mercurial Hosting > traffic-intelligence
annotate scripts/init_tracking.py @ 848:0cb69238e6f5
corrected load/save prototypes
author | Nicolas Saunier <nicolas.saunier@polymtl.ca> |
---|---|
date | Thu, 21 Jul 2016 17:51:11 -0400 |
parents | d45ab817ee11 |
children | 2faabcbde2c4 |
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') |