Mercurial > hg > nsaunier > traffic-intelligence
comparison python/cvutils.py @ 302:9d88a4d97473
corrected bug in compute-homography
| author | Nicolas Saunier <nicolas.saunier@polymtl.ca> |
|---|---|
| date | Mon, 18 Mar 2013 23:37:45 -0400 |
| parents | aba9711b3149 |
| children | 514f6b98cd8c |
comparison
equal
deleted
inserted
replaced
| 301:27f06d28036d | 302:9d88a4d97473 |
|---|---|
| 57 from numpy.lib.npyio import loadtxt | 57 from numpy.lib.npyio import loadtxt |
| 58 from numpy import float32 | 58 from numpy import float32 |
| 59 points = loadtxt(filename, dtype=float32) | 59 points = loadtxt(filename, dtype=float32) |
| 60 return (points[:2,:].T, points[2:,:].T) # (world points, image points) | 60 return (points[:2,:].T, points[2:,:].T) # (world points, image points) |
| 61 | 61 |
| 62 def computeHomography(srcPoints, dstPoints, method=0, ransacReprojThreshold=0.0): | |
| 63 '''Returns the homography matrix mapping from srcPoints to dstPoints (dimension Nx2)''' | |
| 64 #cvSrcPoints = arrayToCvMat(srcPoints); | |
| 65 #cvDstPoints = arrayToCvMat(dstPoints); | |
| 66 #H = cv.CreateMat(3, 3, cv.CV_64FC1) | |
| 67 H, mask = cv2.findHomography(srcPoints, dstPoints, method, ransacReprojThreshold) | |
| 68 return H | |
| 69 | |
| 70 def cvMatToArray(cvmat): | 62 def cvMatToArray(cvmat): |
| 71 '''Converts an OpenCV CvMat to numpy array.''' | 63 '''Converts an OpenCV CvMat to numpy array.''' |
| 72 from numpy.core.multiarray import zeros | 64 from numpy.core.multiarray import zeros |
| 73 a = zeros((cvmat.rows, cvmat.cols))#array([[0.0]*cvmat.width]*cvmat.height) | 65 a = zeros((cvmat.rows, cvmat.cols))#array([[0.0]*cvmat.width]*cvmat.height) |
| 74 for i in xrange(cvmat.rows): | 66 for i in xrange(cvmat.rows): |
| 75 for j in xrange(cvmat.cols): | 67 for j in xrange(cvmat.cols): |
| 76 a[i,j] = cvmat[i,j] | 68 a[i,j] = cvmat[i,j] |
| 77 return a | 69 return a |
| 78 | 70 |
| 79 if opencvExists: | 71 if opencvExists: |
| 72 def computeHomography(srcPoints, dstPoints, method=0, ransacReprojThreshold=0.0): | |
| 73 '''Returns the homography matrix mapping from srcPoints to dstPoints (dimension Nx2)''' | |
| 74 H, mask = cv2.findHomography(srcPoints, dstPoints, method, ransacReprojThreshold) | |
| 75 return H | |
| 76 | |
| 80 def arrayToCvMat(a, t = cv2.cv.CV_64FC1): | 77 def arrayToCvMat(a, t = cv2.cv.CV_64FC1): |
| 81 '''Converts a numpy array to an OpenCV CvMat, with default type CV_64FC1.''' | 78 '''Converts a numpy array to an OpenCV CvMat, with default type CV_64FC1.''' |
| 82 cvmat = cv2.cv.CreateMat(a.shape[0], a.shape[1], t) | 79 cvmat = cv2.cv.CreateMat(a.shape[0], a.shape[1], t) |
| 83 for i in range(cvmat.rows): | 80 for i in range(cvmat.rows): |
| 84 for j in range(cvmat.cols): | 81 for j in range(cvmat.cols): |
