Mercurial > hg > nsaunier > traffic-intelligence
annotate scripts/play-synced-videos.py @ 1106:799ef82caa1a v0.2.4
added code to compute bounding rectangle around each user
| author | Nicolas Saunier <nicolas.saunier@polymtl.ca> |
|---|---|
| date | Fri, 15 Mar 2019 15:58:37 -0400 |
| parents | cc5cb04b04b0 |
| children |
| rev | line source |
|---|---|
|
998
933670761a57
updated code to python 3 (tests pass and scripts run, but non-executed parts of code are probably still not correct)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
985
diff
changeset
|
1 #! /usr/bin/env python3 |
|
821
26daf35180ad
finished modification and demo script to replay synchronized video (with same frame rate)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff
changeset
|
2 |
|
26daf35180ad
finished modification and demo script to replay synchronized video (with same frame rate)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff
changeset
|
3 import sys, argparse, os.path |
|
26daf35180ad
finished modification and demo script to replay synchronized video (with same frame rate)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff
changeset
|
4 from datetime import datetime, timedelta |
|
26daf35180ad
finished modification and demo script to replay synchronized video (with same frame rate)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff
changeset
|
5 |
|
1028
cc5cb04b04b0
major update using the trafficintelligence package name and install through pip
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
998
diff
changeset
|
6 from trafficintelligence import cvutils, utils |
|
cc5cb04b04b0
major update using the trafficintelligence package name and install through pip
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
998
diff
changeset
|
7 from trafficintelligence.metadata import connectDatabase, Site, CameraView, VideoSequence, getSite |
|
cc5cb04b04b0
major update using the trafficintelligence package name and install through pip
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
998
diff
changeset
|
8 |
|
971
9897a13772fb
added utils to load video sequence in metadata
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
842
diff
changeset
|
9 timeConverter = utils.TimeConverter() |
|
9897a13772fb
added utils to load video sequence in metadata
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
842
diff
changeset
|
10 |
|
821
26daf35180ad
finished modification and demo script to replay synchronized video (with same frame rate)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff
changeset
|
11 parser = argparse.ArgumentParser(description='The program displays several views of the same site synchronously.') |
|
983
7463c9bc846b
work in progress on script to manage large dataset with multiple sites
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
971
diff
changeset
|
12 parser.add_argument('--db', dest = 'metadataFilename', help = 'name of the metadata file', required = True) |
|
821
26daf35180ad
finished modification and demo script to replay synchronized video (with same frame rate)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff
changeset
|
13 parser.add_argument('-n', dest = 'siteId', help = 'site id or site name', required = True) |
|
971
9897a13772fb
added utils to load video sequence in metadata
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
842
diff
changeset
|
14 parser.add_argument('-f', dest = 'startTime', help = 'time to start playing (format %%Y-%%m-%%d %%H:%%M:%%S, eg 2011-06-22 10:00:39)', required = True, type = timeConverter.convert) |
|
821
26daf35180ad
finished modification and demo script to replay synchronized video (with same frame rate)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff
changeset
|
15 parser.add_argument('--fps', dest = 'frameRate', help = 'approximate frame rate to replay', default = -1, type = float) |
|
26daf35180ad
finished modification and demo script to replay synchronized video (with same frame rate)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff
changeset
|
16 parser.add_argument('-r', dest = 'rescale', help = 'rescaling factor for the displayed image', default = 1., type = float) |
|
26daf35180ad
finished modification and demo script to replay synchronized video (with same frame rate)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff
changeset
|
17 parser.add_argument('-s', dest = 'step', help = 'display every s image', default = 1, type = int) |
|
26daf35180ad
finished modification and demo script to replay synchronized video (with same frame rate)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff
changeset
|
18 |
|
26daf35180ad
finished modification and demo script to replay synchronized video (with same frame rate)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff
changeset
|
19 args = parser.parse_args() |
|
26daf35180ad
finished modification and demo script to replay synchronized video (with same frame rate)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff
changeset
|
20 |
|
985
668a85c963c3
work on processing and managing large video datasets
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
983
diff
changeset
|
21 session = connectDatabase(args.metadataFilename) |
|
821
26daf35180ad
finished modification and demo script to replay synchronized video (with same frame rate)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff
changeset
|
22 |
|
971
9897a13772fb
added utils to load video sequence in metadata
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
842
diff
changeset
|
23 site = getSite(session, args.siteId) |
|
821
26daf35180ad
finished modification and demo script to replay synchronized video (with same frame rate)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff
changeset
|
24 if site is None: |
|
26daf35180ad
finished modification and demo script to replay synchronized video (with same frame rate)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff
changeset
|
25 print('Site {} was not found in {}. Exiting'.format(args.siteId, args.metadataFilename)) |
|
26daf35180ad
finished modification and demo script to replay synchronized video (with same frame rate)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff
changeset
|
26 sys.exit() |
|
828
14e4ad7c7420
work on merging data for synchronized views
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
822
diff
changeset
|
27 else: |
|
14e4ad7c7420
work on merging data for synchronized views
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
822
diff
changeset
|
28 site = site[0] |
|
821
26daf35180ad
finished modification and demo script to replay synchronized video (with same frame rate)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff
changeset
|
29 |
|
26daf35180ad
finished modification and demo script to replay synchronized video (with same frame rate)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff
changeset
|
30 dirname = os.path.split(args.metadataFilename)[0] |
|
26daf35180ad
finished modification and demo script to replay synchronized video (with same frame rate)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff
changeset
|
31 |
|
26daf35180ad
finished modification and demo script to replay synchronized video (with same frame rate)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff
changeset
|
32 startTime = datetime.strptime(args.startTime, utils.datetimeFormat) |
|
833
8d1dd771aeb3
updated for play synced
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
830
diff
changeset
|
33 cameraViews = session.query(CameraView).filter(CameraView.site == site) |
|
8d1dd771aeb3
updated for play synced
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
830
diff
changeset
|
34 videoSequences = session.query(VideoSequence).filter(VideoSequence.name != None).filter(VideoSequence.startTime <= startTime).all() |
|
8d1dd771aeb3
updated for play synced
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
830
diff
changeset
|
35 #videoSequences = session.query(VideoSequence).filter(VideoSequence.site == site).filter(VideoSequence.startTime <= startTime).all() |
|
8d1dd771aeb3
updated for play synced
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
830
diff
changeset
|
36 videoSequences = [v for v in videoSequences if v.containsInstant(startTime) and v.cameraView in cameraViews] |
|
821
26daf35180ad
finished modification and demo script to replay synchronized video (with same frame rate)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff
changeset
|
37 filenames = [dirname+os.path.sep+v.getVideoSequenceFilename() for v in videoSequences] |
|
26daf35180ad
finished modification and demo script to replay synchronized video (with same frame rate)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff
changeset
|
38 firstFrameNums = [v.getFrameNum(startTime) for v in videoSequences] |
|
26daf35180ad
finished modification and demo script to replay synchronized video (with same frame rate)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff
changeset
|
39 |
|
26daf35180ad
finished modification and demo script to replay synchronized video (with same frame rate)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff
changeset
|
40 cvutils.playVideo(filenames, [v.cameraView.description for v in videoSequences], firstFrameNums, args.frameRate, rescale = args.rescale, step = args.step) |
