comparison trafficintelligence/cvutils.py @ 1029:c6cf75a2ed08

reorganization of imports
author Nicolas Saunier <nicolas.saunier@polymtl.ca>
date Mon, 18 Jun 2018 22:50:59 -0400
parents cc5cb04b04b0
children 956a66096e91
comparison
equal deleted inserted replaced
1028:cc5cb04b04b0 1029:c6cf75a2ed08
1 #! /usr/bin/env python 1 #! /usr/bin/env python
2 '''Image/Video utilities''' 2 '''Image/Video utilities'''
3 3
4 from trafficintelligence import utils, moving 4 from sys import stdout
5 from os import listdir
6 from subprocess import run
7 from math import floor, log10, ceil
8 from time import time
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
11 from numpy.linalg import inv
12 from matplotlib.mlab import find
13 from matplotlib.pyplot import imread, imsave, imshow, figure, subplot
5 14
6 try: 15 try:
7 import cv2 16 import cv2
8 opencvAvailable = True 17 opencvAvailable = True
9 except ImportError: 18 except ImportError:
14 skimageAvailable = True 23 skimageAvailable = True
15 except ImportError: 24 except ImportError:
16 print('Scikit-image library could not be loaded (HoG-based classification methods will not be available)') 25 print('Scikit-image library could not be loaded (HoG-based classification methods will not be available)')
17 skimageAvailable = False 26 skimageAvailable = False
18 27
19 from sys import stdout 28 from trafficintelligence import utils, moving
20 from os import listdir
21 from subprocess import run
22 from math import floor, log10, ceil
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
25 from numpy.linalg import inv
26 from matplotlib.mlab import find
27 from matplotlib.pyplot import imread, imsave
28 29
29 videoFilenameExtensions = ['mov', 'avi', 'mp4', 'MOV', 'AVI', 'MP4'] 30 videoFilenameExtensions = ['mov', 'avi', 'mp4', 'MOV', 'AVI', 'MP4']
30 trackerExe = 'feature-based-tracking' 31 trackerExe = 'feature-based-tracking'
31 #importaggdraw # agg on top of PIL (antialiased drawing) 32 #importaggdraw # agg on top of PIL (antialiased drawing)
32 33
101 for i in range(0, last): 102 for i in range(0, last):
102 cv2.line(img, positions[i].asint().astuple(), positions[i+1].asint().astuple(), color, **kwargs) 103 cv2.line(img, positions[i].asint().astuple(), positions[i+1].asint().astuple(), color, **kwargs)
103 104
104 def cvImshow(windowName, img, rescale = 1.0): 105 def cvImshow(windowName, img, rescale = 1.0):
105 'Rescales the image (in particular if too large)' 106 'Rescales the image (in particular if too large)'
106 from cv2 import resize
107 if rescale != 1.: 107 if rescale != 1.:
108 size = (int(round(img.shape[1]*rescale)), int(round(img.shape[0]*rescale))) 108 size = (int(round(img.shape[1]*rescale)), int(round(img.shape[0]*rescale)))
109 resizedImg = resize(img, size) 109 resizedImg = cv2.resize(img, size)
110 cv2.imshow(windowName, resizedImg) 110 cv2.imshow(windowName, resizedImg)
111 else: 111 else:
112 cv2.imshow(windowName, img) 112 cv2.imshow(windowName, img)
113 113
114 def computeUndistortMaps(width, height, undistortedImageMultiplication, intrinsicCameraMatrix, distortionCoefficients): 114 def computeUndistortMaps(width, height, undistortedImageMultiplication, intrinsicCameraMatrix, distortionCoefficients):
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 from time import time
307 intrinsicCameraFilename = '/tmp/intrinsic-{}.txt'.format(time()) 306 intrinsicCameraFilename = '/tmp/intrinsic-{}.txt'.format(time())
308 savetxt(intrinsicCameraFilename, intrinsicCameraMatrix) 307 savetxt(intrinsicCameraFilename, intrinsicCameraMatrix)
309 cmd += ['--intrinsic-camera-filename', intrinsicCameraFilename] 308 cmd += ['--intrinsic-camera-filename', intrinsicCameraFilename]
310 if distortionCoefficients is not None: 309 if distortionCoefficients is not None:
311 cmd += ['--distortion-coefficients '+' '.join([str(x) for x in distortionCoefficients])] 310 cmd += ['--distortion-coefficients '+' '.join([str(x) for x in distortionCoefficients])]
626 def HOG(image, rescaleSize = (64, 64), orientations = 9, pixelsPerCell = (8,8), cellsPerBlock = (2,2), blockNorm = 'L1', visualize = False, transformSqrt = False): 625 def HOG(image, rescaleSize = (64, 64), orientations = 9, pixelsPerCell = (8,8), cellsPerBlock = (2,2), blockNorm = 'L1', visualize = False, transformSqrt = False):
627 bwImg = color.rgb2gray(image) 626 bwImg = color.rgb2gray(image)
628 inputImg = transform.resize(bwImg, rescaleSize) 627 inputImg = transform.resize(bwImg, rescaleSize)
629 features = hog(inputImg, orientations, pixelsPerCell, cellsPerBlock, blockNorm, visualize, transformSqrt, True) 628 features = hog(inputImg, orientations, pixelsPerCell, cellsPerBlock, blockNorm, visualize, transformSqrt, True)
630 if visualize: 629 if visualize:
631 from matplotlib.pyplot import imshow, figure, subplot
632 hogViz = features[1] 630 hogViz = features[1]
633 features = features[0] 631 features = features[0]
634 figure() 632 figure()
635 subplot(1,2,1) 633 subplot(1,2,1)
636 imshow(inputImg) 634 imshow(inputImg)