Mercurial Hosting > traffic-intelligence
comparison python/cvutils.py @ 895:739acd338cc0
added script to extract camera info from tacal file by Lund University (T analyst)
author | Nicolas Saunier <nicolas.saunier@polymtl.ca> |
---|---|
date | Thu, 01 Jun 2017 14:54:11 -0400 |
parents | 0c1fed9e8862 |
children | f5a49b603e8b |
comparison
equal
deleted
inserted
replaced
894:0c1fed9e8862 | 895:739acd338cc0 |
---|---|
386 projected = camera.image_to_world(tuple(srcPoint)) | 386 projected = camera.image_to_world(tuple(srcPoint)) |
387 dstPoints.append([projected[0], projected[1]]) | 387 dstPoints.append([projected[0], projected[1]]) |
388 H, mask = cv2.findHomography(array(srcPoints), array(dstPoints), method = 0) # No need for different methods for finding homography | 388 H, mask = cv2.findHomography(array(srcPoints), array(dstPoints), method = 0) # No need for different methods for finding homography |
389 return H | 389 return H |
390 | 390 |
391 def getIntrinsicCameraMatrix(cameraData): | |
392 return array([[cameraData['f']*cameraData['Sx']/cameraData['dx'], 0, cameraData['Cx']], | |
393 [0, cameraData['f']/cameraData['dy'], cameraData['Cy']], | |
394 [0, 0, 1.]]) | |
395 | |
396 def getDistortionCoefficients(cameraData): | |
397 return array([cameraData['k']]+4*[0]) | |
398 | |
391 def undistortedCoordinates(map1, map2, x, y, maxDistance = 1.): | 399 def undistortedCoordinates(map1, map2, x, y, maxDistance = 1.): |
392 '''Returns the coordinates of a point in undistorted image | 400 '''Returns the coordinates of a point in undistorted image |
393 map1 and map2 are the mapping functions from undistorted image | 401 map1 and map2 are the mapping functions from undistorted image |
394 to distorted (original image) | 402 to distorted (original image) |
395 map1(x,y) = originalx, originaly''' | 403 map1(x,y) = originalx, originaly''' |
478 else: | 486 else: |
479 print('Pattern not found in '+fname) | 487 print('Pattern not found in '+fname) |
480 ## Close up image loading and calibrate | 488 ## Close up image loading and calibrate |
481 cv2.destroyAllWindows() | 489 cv2.destroyAllWindows() |
482 if len(objpoints) == 0 or len(imgpoints) == 0: | 490 if len(objpoints) == 0 or len(imgpoints) == 0: |
483 return False | 491 return None |
484 try: | 492 try: |
485 ret, camera_matrix, dist_coeffs, rvecs, tvecs = cv2.calibrateCamera(objpoints, imgpoints, gray.shape[::-1], None, None) | 493 ret, camera_matrix, dist_coeffs, rvecs, tvecs = cv2.calibrateCamera(objpoints, imgpoints, gray.shape[::-1], None, None) |
486 except NameError: | 494 except NameError: |
487 return False | 495 return None |
488 savetxt('intrinsic-camera.txt', camera_matrix) | 496 savetxt('intrinsic-camera.txt', camera_matrix) |
489 return camera_matrix, dist_coeffs | 497 return camera_matrix, dist_coeffs |
490 | 498 |
491 def undistortImage(img, intrinsicCameraMatrix = None, distortionCoefficients = None, undistortedImageMultiplication = 1., interpolation=cv2.INTER_LINEAR): | 499 def undistortImage(img, intrinsicCameraMatrix = None, distortionCoefficients = None, undistortedImageMultiplication = 1., interpolation=cv2.INTER_LINEAR): |
492 '''Undistorts the image passed in argument''' | 500 '''Undistorts the image passed in argument''' |