Mercurial Hosting > traffic-intelligence
comparison scripts/init-tracking.py @ 998:933670761a57
updated code to python 3 (tests pass and scripts run, but non-executed parts of code are probably still not correct)
author | Nicolas Saunier <nicolas.saunier@polymtl.ca> |
---|---|
date | Sun, 27 May 2018 23:22:48 -0400 |
parents | scripts/init_tracking.py@2faabcbde2c4 |
children | 16932cefabc1 |
comparison
equal
deleted
inserted
replaced
997:4f3387a242a1 | 998:933670761a57 |
---|---|
1 #! /usr/bin/env python3 | |
2 | |
3 import sys, argparse, os.path, storage, utils | |
4 from shutil import copy | |
5 from cvutils import getImagesFromVideo | |
6 from matplotlib.pyplot import imsave | |
7 | |
8 # could try to guess the video | |
9 # check if there is already a tracking.cfg file | |
10 | |
11 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') | |
12 | |
13 parser.add_argument('-i', dest = 'videoFilename', help = 'filename of the video sequence', required = True) | |
14 | |
15 args = parser.parse_args() | |
16 | |
17 # assumes tracking.cfg is in the parent directory to the directory of the traffic intelligence python modules | |
18 matchingPaths = [s for s in sys.path if 'traffic-intelligence' in s] | |
19 #if len(matchingPaths) > 1: | |
20 # print('Too many matching paths for Traffic Intelligence modules: {}'.format(matchingPaths)) | |
21 if len(matchingPaths) == 0: | |
22 print('No environment path to Traffic Intelligence modules.\nExiting') | |
23 sys.exit() | |
24 else: | |
25 directoryName = matchingPaths[0] | |
26 if directoryName.endswith('/'): | |
27 directoryName = directoryName[:-1] | |
28 if os.path.exists(directoryName+'/../tracking.cfg') and not os.path.exists('./tracking.cfg'): | |
29 f = storage.openCheck(directoryName+'/../tracking.cfg') | |
30 out = storage.openCheck('./tracking.cfg', 'w') | |
31 for l in f: | |
32 if 'video-filename' in l: | |
33 tmp = l.split('=') | |
34 out.write(tmp[0]+'= '+args.videoFilename+'\n') | |
35 elif 'database-filename' in l: | |
36 tmp = l.split('=') | |
37 out.write(tmp[0]+'= '+utils.removeExtension(args.videoFilename)+'.sqlite\n') | |
38 else: | |
39 out.write(l) | |
40 f.close() | |
41 out.close() | |
42 print('Configuration file tracking.cfg successfully copied to the current directory with video and database filename adapted') | |
43 if os.path.exists(directoryName+'/../classifier.cfg') and not os.path.exists('./classifier.cfg'): | |
44 copy(directoryName+'/../classifier.cfg', 'classifier.cfg') | |
45 print('Configuration file classifier.cfg successfully copied to the current directory') | |
46 | |
47 # extract image from video | |
48 image = getImagesFromVideo(args.videoFilename, saveImage = True, outputPrefix = 'frame') | |
49 print('first video frame successfully copied to the current directory') | |
50 | |
51 # next commands | |
52 print('--------------------------------------\nHere are a sample of the next command to compute the homography,\ntrack features, group them in objects and display object trajectories\n--------------------------------------') | |
53 print('compute_homography -i [frame.png] -w [world_image] -n [npoints] -u [unit_per_pixel]') | |
54 print('feature-based-tracking tracking.cfg --tf') | |
55 print('feature-based-tracking tracking.cfg --gf') | |
56 print('display-trajectories --cfg tracking.cfg -t object') |