Mercurial Hosting > traffic-intelligence
comparison trafficintelligence/cvutils.py @ 1245:371c718e57d7
interface updates
author | Nicolas Saunier <nicolas.saunier@polymtl.ca> |
---|---|
date | Thu, 08 Feb 2024 16:10:54 -0500 |
parents | 4cd8ace3552f |
children | ef68d4ba7dae |
comparison
equal
deleted
inserted
replaced
1244:00b71da2baac | 1245:371c718e57d7 |
---|---|
2 '''Image/Video utilities''' | 2 '''Image/Video utilities''' |
3 | 3 |
4 from sys import stdout | 4 from sys import stdout |
5 from os import listdir | 5 from os import listdir |
6 from subprocess import run | 6 from subprocess import run |
7 from math import floor, log10, ceil | 7 from math import floor, log10, ceil, inf |
8 from time import time | 8 from time import time |
9 | 9 |
10 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, nonzero, dtype | 10 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, nonzero, dtype |
11 from numpy.linalg import inv | 11 from numpy.linalg import inv |
12 from matplotlib.pyplot import imread, imsave, imshow, figure, subplot | 12 from matplotlib.pyplot import imread, imsave, imshow, figure, subplot |
310 if dryRun: | 310 if dryRun: |
311 print(cmd) | 311 print(cmd) |
312 else: | 312 else: |
313 run(cmd) | 313 run(cmd) |
314 | 314 |
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, **kwargs): | 315 def displayTrajectories(videoFilename, objects, boundingBoxes = {}, homography = None, firstFrameNum = 0, lastFrameNum = None, printFrames = True, rescale = 1., nFramesStep = 1, saveAllImages = False, nZerosFilenameArg = None, undistort = False, intrinsicCameraMatrix = None, distortionCoefficients = None, undistortedImageMultiplication = 1., annotations = [], gtMatches = {}, toMatches = {}, colorBlind = False, **kwargs): |
316 '''Displays the objects overlaid frame by frame over the video ''' | 316 '''Displays the objects overlaid frame by frame over the video ''' |
317 if colorBlind: | 317 if colorBlind: |
318 colorType = 'colorblind' | 318 colorType = 'colorblind' |
319 else: | 319 else: |
320 colorType = 'default' | 320 colorType = 'default' |
332 if capture.isOpened(): | 332 if capture.isOpened(): |
333 key = -1 | 333 key = -1 |
334 ret = True | 334 ret = True |
335 frameNum = firstFrameNum | 335 frameNum = firstFrameNum |
336 capture.set(cv2.CAP_PROP_POS_FRAMES, firstFrameNum) | 336 capture.set(cv2.CAP_PROP_POS_FRAMES, firstFrameNum) |
337 if lastFrameNumArg is None: | |
338 lastFrameNum = float("inf") | |
339 else: | |
340 lastFrameNum = lastFrameNumArg | |
341 if nZerosFilenameArg is None: | 337 if nZerosFilenameArg is None: |
342 if lastFrameNumArg is None: | 338 if lastFrameNum is None or lastFrameNum == inf: |
343 nZerosFilename = int(ceil(log10(objects[-1].getLastInstant()))) | 339 nZerosFilename = int(ceil(log10(objects[-1].getLastInstant()))) |
344 else: | 340 else: |
345 nZerosFilename = int(ceil(log10(lastFrameNum))) | 341 nZerosFilename = int(ceil(log10(lastFrameNum))) |
346 else: | 342 else: |
347 nZerosFilename = nZerosFilenameArg | 343 nZerosFilename = nZerosFilenameArg |