view scripts/display-trajectories.py @ 398:3399bd48cb40

Ajout d'une méthode pour obtenir le nombre de FPS Méthode de capture des trames vidéos plus résistante aux erreur Utilisation d'un dictionnaire pour les fichier de configuration afin de garder le nom des sections
author Jean-Philippe Jodoin <jpjodoin@gmail.com>
date Mon, 29 Jul 2013 13:46:07 -0400
parents eaf7765221d9
children d337bffd7283
line wrap: on
line source

#! /usr/bin/env python

import sys, argparse

import storage, cvutils, utils

from numpy.linalg.linalg import inv
from numpy import loadtxt

parser = argparse.ArgumentParser(description='The program displays feature or object trajectories overlaid over the video frames.', epilog = 'Either the configuration filename or the other parameters (at least video and database filenames) need to be provided.')
parser.add_argument('--cfg', dest = 'configFilename', help = 'name of the configuration file')
parser.add_argument('-d', dest = 'databaseFilename', help = 'name of the Sqlite database file')
parser.add_argument('-i', dest = 'videoFilename', help = 'name of the video file')
parser.add_argument('-t', dest = 'trajectoryType', help = 'type of trajectories to display', choices = ['feature', 'object'], default = 'feature')
parser.add_argument('-o', dest = 'homography', help = 'name of the image to world homography')
parser.add_argument('-f', dest = 'firstFrameNum', help = 'number of first frame number to display', default = 0, type = int)
parser.add_argument('-r', dest = 'rescale', help = 'rescaling factor for the displayed image', default = 1., type = float)

args = parser.parse_args()

homography = None
if args.configFilename: # consider there is a configuration file
    params = utils.TrackingParameters()
    params.loadConfigFile(args.configFilename)
    videoFilename = params.videoFilename
    databaseFilename = params.databaseFilename
    homography = inv(params.homography)
    firstFrameNum = params.firstFrameNum

if args.videoFilename != None:
    videoFilename = args.videoFilename
if args.databaseFilename != None:
    databaseFilename = args.databaseFilename
if args.homography != None:
    homography = inv(loadtxt(args.homography))            
if args.firstFrameNum != None:
    firstFrameNum = args.firstFrameNum

objects = storage.loadTrajectoriesFromSqlite(databaseFilename, args.trajectoryType)
boundingBoxes = storage.loadBoundingBoxTable(databaseFilename)
cvutils.displayTrajectories(videoFilename, objects, boundingBoxes, homography, firstFrameNum, rescale = args.rescale)