Mercurial > hg > nsaunier > traffic-intelligence
comparison trafficintelligence/cvutils.py @ 1168:d71a4d174b1a
corrected potential bug with dtype in image to world projection
| author | Nicolas Saunier <nicolas.saunier@polymtl.ca> |
|---|---|
| date | Tue, 06 Jul 2021 00:28:24 -0400 |
| parents | 7eb972942f22 |
| children | 2f89dc3d99e5 |
comparison
equal
deleted
inserted
replaced
| 1167:f67b4f892195 | 1168:d71a4d174b1a |
|---|---|
| 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 |
| 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 | 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 |
| 13 | 13 |
| 14 try: | 14 try: |
| 15 import cv2 | 15 import cv2 |
| 69 points = loadtxt(filename, delimiter=',') | 69 points = loadtxt(filename, delimiter=',') |
| 70 savetxt(utils.removeExtension(filename)+'-point-correspondences.txt',append(points[:,:2].T, points[:,3:].T, axis=0)) | 70 savetxt(utils.removeExtension(filename)+'-point-correspondences.txt',append(points[:,:2].T, points[:,3:].T, axis=0)) |
| 71 | 71 |
| 72 def loadPointCorrespondences(filename): | 72 def loadPointCorrespondences(filename): |
| 73 '''Loads and returns the corresponding points in world (first 2 lines) and image spaces (last 2 lines)''' | 73 '''Loads and returns the corresponding points in world (first 2 lines) and image spaces (last 2 lines)''' |
| 74 points = loadtxt(filename, dtype=float32) | 74 points = loadtxt(filename, dtype=dtype('float32')) |
| 75 return (points[:2,:].T, points[2:,:].T) # (world points, image points) | 75 return (points[:2,:].T, points[2:,:].T) # (world points, image points) |
| 76 | 76 |
| 77 def cvMatToArray(cvmat): | 77 def cvMatToArray(cvmat): |
| 78 '''Converts an OpenCV CvMat to numpy array.''' | 78 '''Converts an OpenCV CvMat to numpy array.''' |
| 79 print('Deprecated, use new interface') | 79 print('Deprecated, use new interface') |
| 557 '''Projects points (2xN array) from image (video) space to world space | 557 '''Projects points (2xN array) from image (video) space to world space |
| 558 1. through undistorting if provided by intrinsic camera matrix and distortion coefficients | 558 1. through undistorting if provided by intrinsic camera matrix and distortion coefficients |
| 559 2. through homograph projection (from ideal point (no camera) to world)''' | 559 2. through homograph projection (from ideal point (no camera) to world)''' |
| 560 if points.shape[0] != 2: | 560 if points.shape[0] != 2: |
| 561 raise Exception('points of dimension {}'.format(points.shape)) | 561 raise Exception('points of dimension {}'.format(points.shape)) |
| 562 | 562 if points.dtype != dtype('float64'): |
| 563 points = array(points, dtype = dtype('float64')) | |
| 564 | |
| 563 if intrinsicCameraMatrix is not None and distortionCoefficients is not None: | 565 if intrinsicCameraMatrix is not None and distortionCoefficients is not None: |
| 564 undistortedPoints = cv2.undistortPoints(points.T.reshape(1,points.shape[1], 2), intrinsicCameraMatrix, distortionCoefficients).reshape(-1,2) | 566 undistortedPoints = cv2.undistortPoints(points.T.reshape(1,points.shape[1], 2), intrinsicCameraMatrix, distortionCoefficients).reshape(-1,2) |
| 565 return homographyProject(undistortedPoints.T, homography) | 567 return homographyProject(undistortedPoints.T, homography) |
| 566 else: | 568 else: |
| 567 return homographyProject(points, homography) | 569 return homographyProject(points, homography) |
| 641 img = imread(imageDirectory+filename) | 643 img = imread(imageDirectory+filename) |
| 642 features = HOG(img, rescaleSize, orientations, pixelsPerCell, cellsPerBlock, blockNorm, visualize, transformSqrt) | 644 features = HOG(img, rescaleSize, orientations, pixelsPerCell, cellsPerBlock, blockNorm, visualize, transformSqrt) |
| 643 inputData.append(features) | 645 inputData.append(features) |
| 644 | 646 |
| 645 nImages = len(inputData) | 647 nImages = len(inputData) |
| 646 return array(inputData, dtype = float32), array([classLabel]*nImages) | 648 return array(inputData, dtype = dtype('float32')), array([classLabel]*nImages) |
| 647 | 649 |
| 648 | 650 |
| 649 ######################### | 651 ######################### |
| 650 # running tests | 652 # running tests |
| 651 ######################### | 653 ######################### |
