Mercurial > hg > nsaunier > traffic-intelligence
comparison python/cvutils.py @ 1015:cf9d29de3dbf
merge With Pr Saunier's code
| author | Wendlasida |
|---|---|
| date | Mon, 04 Jun 2018 11:25:49 -0400 |
| parents | a5f2309bb1ff |
| children | 16932cefabc1 |
comparison
equal
deleted
inserted
replaced
| 1014:026f6b3b122c | 1015:cf9d29de3dbf |
|---|---|
| 16 print('Scikit-image library could not be loaded (HoG-based classification methods will not be available)') | 16 print('Scikit-image library could not be loaded (HoG-based classification methods will not be available)') |
| 17 skimageAvailable = False | 17 skimageAvailable = False |
| 18 | 18 |
| 19 from sys import stdout | 19 from sys import stdout |
| 20 from os import listdir | 20 from os import listdir |
| 21 from subprocess import check_call | 21 from subprocess import run |
| 22 from math import floor, log10, ceil | 22 from math import floor, log10, ceil |
| 23 | 23 |
| 24 from numpy import dot, array, append, float32, loadtxt, savetxt, append, zeros, ones, identity, abs as npabs, logical_and, unravel_index, sum as npsum, isnan, mgrid, median, floor as npfloor, ceil as npceil | 24 from numpy import dot, array, append, float32, loadtxt, savetxt, append, zeros, ones, identity, abs as npabs, logical_and, unravel_index, sum as npsum, isnan, mgrid, median, floor as npfloor, ceil as npceil |
| 25 from numpy.linalg import inv | 25 from numpy.linalg import inv |
| 26 from matplotlib.mlab import find | 26 from matplotlib.mlab import find |
| 280 if yCropMax != yCropMin and xCropMax != xCropMin and (yCropMax - yCropMin) * (xCropMax - xCropMin) > minNPixels: | 280 if yCropMax != yCropMin and xCropMax != xCropMin and (yCropMax - yCropMin) * (xCropMax - xCropMin) > minNPixels: |
| 281 return img[yCropMin : yCropMax, xCropMin : xCropMax] | 281 return img[yCropMin : yCropMax, xCropMin : xCropMax] |
| 282 else: | 282 else: |
| 283 return None | 283 return None |
| 284 | 284 |
| 285 def tracking(configFilename, grouping, videoFilename = None, dbFilename = None, homographyFilename = None, maskFilename = None, undistort = False, intrinsicCameraMatrix = None, distortionCoefficients = None): | 285 def tracking(configFilename, grouping, videoFilename = None, dbFilename = None, homographyFilename = None, maskFilename = None, undistort = False, intrinsicCameraMatrix = None, distortionCoefficients = None, dryRun = False): |
| 286 '''Runs the tracker in a subprocess | 286 '''Runs the tracker in a subprocess |
| 287 if grouping is True, it is feature grouping | 287 if grouping is True, it is feature grouping |
| 288 otherwise it is feature tracking''' | 288 otherwise it is feature tracking''' |
| 289 if grouping: | 289 if grouping: |
| 290 trackingMode = '--gf' | 290 trackingMode = '--gf' |
| 301 if maskFilename is not None: | 301 if maskFilename is not None: |
| 302 cmd += ['--mask-filename', maskFilename] | 302 cmd += ['--mask-filename', maskFilename] |
| 303 if undistort: | 303 if undistort: |
| 304 cmd += ['--undistort', 'true'] | 304 cmd += ['--undistort', 'true'] |
| 305 if intrinsicCameraMatrix is not None: # we currently have to save a file | 305 if intrinsicCameraMatrix is not None: # we currently have to save a file |
| 306 pass#from time import time | 306 from time import time |
| 307 #savetxt | 307 intrinsicCameraFilename = '/tmp/intrinsic-{}.txt'.format(time()) |
| 308 #cmd += [] | 308 savetxt(intrinsicCameraFilename, intrinsicCameraMatrix) |
| 309 cmd += ['--intrinsic-camera-filename', intrinsicCameraFilename] | |
| 309 if distortionCoefficients is not None: | 310 if distortionCoefficients is not None: |
| 310 cmd += ['--distortion-coefficients', ' '.join([str(x) for x in distortionCoefficients])] | 311 cmd += ['--distortion-coefficients '+' '.join([str(x) for x in distortionCoefficients])] |
| 311 | 312 if dryRun: |
| 312 #check_call([trackerExe, configFilename, trackingMode]) # , stderr = out, shell = True | 313 print(cmd) |
| 313 print(cmd) # , stderr = out, shell = True | 314 else: |
| 315 run(cmd) | |
| 314 | 316 |
| 315 def displayTrajectories(videoFilename, objects, boundingBoxes = {}, homography = None, firstFrameNum = 0, lastFrameNumArg = None, printFrames = True, rescale = 1., nFramesStep = 1, saveAllImages = False, nZerosFilenameArg = None, undistort = False, intrinsicCameraMatrix = None, distortionCoefficients = None, undistortedImageMultiplication = 1., annotations = [], gtMatches = {}, toMatches = {}, colorBlind = False): | 317 def displayTrajectories(videoFilename, objects, boundingBoxes = {}, homography = None, firstFrameNum = 0, lastFrameNumArg = None, printFrames = True, rescale = 1., nFramesStep = 1, saveAllImages = False, nZerosFilenameArg = None, undistort = False, intrinsicCameraMatrix = None, distortionCoefficients = None, undistortedImageMultiplication = 1., annotations = [], gtMatches = {}, toMatches = {}, colorBlind = False): |
| 316 '''Displays the objects overlaid frame by frame over the video ''' | 318 '''Displays the objects overlaid frame by frame over the video ''' |
| 317 if colorBlind: | 319 if colorBlind: |
| 318 colorType = 'colorblind' | 320 colorType = 'colorblind' |
