Mercurial > hg > nsaunier > traffic-intelligence
comparison scripts/merge-features.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 | 668a85c963c3 |
| children | cc5cb04b04b0 |
comparison
equal
deleted
inserted
replaced
| 997:4f3387a242a1 | 998:933670761a57 |
|---|---|
| 1 #! /usr/bin/env python | 1 #! /usr/bin/env python3 |
| 2 | 2 |
| 3 import sys, argparse, os.path, sqlite3 | 3 import sys, argparse, os.path, sqlite3 |
| 4 import cvutils, utils, moving, storage | 4 import cvutils, utils, moving, storage |
| 5 from metadata import connectDatabase, Site, VideoSequence, CameraView, getSite | 5 from metadata import connectDatabase, Site, VideoSequence, CameraView, getSite |
| 6 from datetime import datetime, timedelta | 6 from datetime import datetime, timedelta |
| 38 timeIntervals = {} | 38 timeIntervals = {} |
| 39 for cv in videoSequences: | 39 for cv in videoSequences: |
| 40 timeIntervals[cv] = moving.TimeInterval.unionIntervals([v.getTimeInterval() for v in videoSequences[cv]]) | 40 timeIntervals[cv] = moving.TimeInterval.unionIntervals([v.getTimeInterval() for v in videoSequences[cv]]) |
| 41 | 41 |
| 42 # intersection of the time interval (union) for each camera view | 42 # intersection of the time interval (union) for each camera view |
| 43 commonTimeInterval = timeIntervals.values()[0] | 43 commonTimeInterval = list(timeIntervals.values())[0] |
| 44 for inter in timeIntervals.values()[1:]: | 44 for inter in timeIntervals.values()[1:]: |
| 45 commonTimeInterval = moving.TimeInterval.intersection(commonTimeInterval, inter) | 45 commonTimeInterval = moving.TimeInterval.intersection(commonTimeInterval, inter) |
| 46 commonTimeInterval = moving.TimeInterval.intersection(commonTimeInterval, processInterval) | 46 commonTimeInterval = moving.TimeInterval.intersection(commonTimeInterval, processInterval) |
| 47 | 47 |
| 48 if commonTimeInterval.empty(): | 48 if commonTimeInterval.empty(): |
| 69 if len(dirname) == 0: | 69 if len(dirname) == 0: |
| 70 dirname = '.' | 70 dirname = '.' |
| 71 | 71 |
| 72 newTrajectoryId = -1 | 72 newTrajectoryId = -1 |
| 73 # first frame num is commonTimeInterval | 73 # first frame num is commonTimeInterval |
| 74 for cv, vs in videoSequences.iteritems(): | 74 for cv, vs in videoSequences.items(): |
| 75 print cv.idx, cv.description | 75 print(cv.idx, cv.description) |
| 76 for videoSequence in vs: | 76 for videoSequence in vs: |
| 77 try: | 77 try: |
| 78 vsConnection = sqlite3.connect(dirname+os.path.sep+videoSequence.getDatabaseFilename()) | 78 vsConnection = sqlite3.connect(dirname+os.path.sep+videoSequence.getDatabaseFilename()) |
| 79 vsCursor = vsConnection.cursor() | 79 vsCursor = vsConnection.cursor() |
| 80 firstFrameNum = utils.deltaFrames(videoSequence.startTime, commonTimeInterval.first, frameRate) | 80 firstFrameNum = utils.deltaFrames(videoSequence.startTime, commonTimeInterval.first, frameRate) |
| 91 outCursor.execute(storage.insertTrajectoryQuery('positions'), (newTrajectoryId, row[1]-firstFrameNum, row[2], row[3])) | 91 outCursor.execute(storage.insertTrajectoryQuery('positions'), (newTrajectoryId, row[1]-firstFrameNum, row[2], row[3])) |
| 92 # velocities table | 92 # velocities table |
| 93 for row in vsCursor: | 93 for row in vsCursor: |
| 94 outCursor.execute(storage.insertTrajectoryQuery('velocities'), (featureIdCorrespondences[row[0]], row[1]-firstFrameNum, row[2], row[3])) | 94 outCursor.execute(storage.insertTrajectoryQuery('velocities'), (featureIdCorrespondences[row[0]], row[1]-firstFrameNum, row[2], row[3])) |
| 95 # saving the id correspondences | 95 # saving the id correspondences |
| 96 for oldId, newId in featureIdCorrespondences.iteritems(): | 96 for oldId, newId in featureIdCorrespondences.items(): |
| 97 outCursor.execute("INSERT INTO feature_correspondences (trajectory_id, source_dbname, db_trajectory_id) VALUES ({},\"{}\",{})".format(newId, videoSequence.name, oldId)) | 97 outCursor.execute("INSERT INTO feature_correspondences (trajectory_id, source_dbname, db_trajectory_id) VALUES ({},\"{}\",{})".format(newId, videoSequence.name, oldId)) |
| 98 outConnection.commit() | 98 outConnection.commit() |
| 99 except sqlite3.OperationalError as error: | 99 except sqlite3.OperationalError as error: |
| 100 storage.printDBError(error) | 100 storage.printDBError(error) |
| 101 | 101 |
