Python cv2.getOptimalNewCameraMatrix() Examples
The following are 7
code examples of cv2.getOptimalNewCameraMatrix().
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example.
You may also want to check out all available functions/classes of the module
cv2
, or try the search function
.
Example #1
Source File: calibrate_camera.py From derplearning with MIT License | 9 votes |
def live_undistort(camera, camera_matrix, distortion_coefficients): """ Using a given calibration matrix, display the distorted, undistorted, and cropped frame""" scaled_camera_matrix, roi = cv2.getOptimalNewCameraMatrix( camera_matrix, distortion_coefficients, camera.size, 1, camera.size ) while True: ret, frame = camera.cap.read() assert ret distorted_frame = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY) undistorted_frame = cv2.undistort( distorted_frame, camera_matrix, distortion_coefficients, None, scaled_camera_matrix, ) roi_x, roi_y, roi_w, roi_h = roi cropped_frame = undistorted_frame[roi_y : roi_y + roi_h, roi_x : roi_x + roi_w] cv2.imshow("distorted %s" % (distorted_frame.shape,), distorted_frame) cv2.imshow("undistorted %s" % (undistorted_frame.shape,), undistorted_frame) cv2.imshow("cropped %s" % (cropped_frame.shape,), cropped_frame) cv2.waitKey(10)
Example #2
Source File: base_camera.py From Color-Tracker with MIT License | 5 votes |
def _undistort_image(self, image): if self._camera_matrix is None or self._distortion_coefficients is None: import warnings warnings.warn("Undistortion has no effect because <camera_matrix>/<distortion_coefficients> is None!") return image h, w = image.shape[:2] new_camera_matrix, roi = cv2.getOptimalNewCameraMatrix(self._camera_matrix, self._distortion_coefficients, (w, h), 1, (w, h)) undistorted = cv2.undistort(image, self._camera_matrix, self._distortion_coefficients, None, new_camera_matrix) return undistorted
Example #3
Source File: get-undistortion-maps.py From fsoco with Apache License 2.0 | 5 votes |
def main(): basler_undistorted = pickle.load(open("basler_pickle.p", "rb")) #objects = [] #with (open("./basler_pickle.p", "rb")) as openfile: # while True: # try: # basler_undistorted.append(pickle.load(openfile)) # except EOFError: # break image_width = 1280 image_height = 1024 #print(basler_undistorted) cam_mtx = basler_undistorted["mtx"] cam_dist = basler_undistorted["dist"] rvecs = basler_undistorted["rvecs"] tvecs = basler_undistorted["tvecs"] #imageSize = image_height * image_width imageSize = ( image_height, image_width ) #getOptimal...Mtx(cameraMatrix, distCoeffs, imageSize, alpha[, newImgSize[, centerPrincipalPoint]]) -> retval, validPixROI # Doesn't take Rect of validPixROI, contrary to the cpp method new_cam_mtx, valid_roi = cv.getOptimalNewCameraMatrix(cam_mtx, cam_dist, imageSize, 1, imageSize, 1) # getOptimalNewCameraMatrix() possibly not working like in cpp #map1, map2 = cv.initUndistortRectifyMap(cam_mtx, cam_dist, np.eye(3), new_cam_mtx, imageSize, cv.CV_16SC2); map1, map2 = cv.initUndistortRectifyMap(cam_mtx, cam_dist, np.eye(3), cam_mtx, imageSize, cv.CV_16SC2); # map1 and map2 can be used together with cv.remap() for efficient real-time undistortion # Only need to be calculated once. maps = { "map1": map1, "map2": map2 } pickle.dump( maps, open("maps.p", "wb"))
Example #4
Source File: vo.py From Monocular-Visual-Inertial-Odometry with MIT License | 5 votes |
def undistort(img, dist, mtx): #undistorstion routine h, w = img.shape[:2] newcameramtx, roi=cv2.getOptimalNewCameraMatrix(mtx,dist,(w,h),1,(w,h)) dst = cv2.undistort(img, mtx, dist, None, newcameramtx) x,y,w,h = roi dst = dst[y:y+h, x:x+w] return dst #testing undistort function
Example #5
Source File: undistort.py From PyCV-time with MIT License | 5 votes |
def apply(self, img, crop = True): h, w = img.shape[:2] newcameramtx, roi=cv2.getOptimalNewCameraMatrix(self.mtx, self.dist,(w,h),1,(w,h)) # undistort dst = cv2.undistort(img, self.mtx, self.dist, None, newcameramtx) # crop the image if crop is not True: return dst x,y,w,h = roi dst = dst[y:y+h, x:x+w] return dst
Example #6
Source File: undistort.py From PyCV-time with MIT License | 5 votes |
def apply(self, img, crop = True): h, w = img.shape[:2] newcameramtx, roi=cv2.getOptimalNewCameraMatrix(self.mtx, self.dist,(w,h),1,(w,h)) # undistort dst = cv2.undistort(img, self.mtx, self.dist, None, newcameramtx) # crop the image if crop is not True: return dst x,y,w,h = roi dst = dst[y:y+h, x:x+w] return dst
Example #7
Source File: camera.py From camera.py with MIT License | 4 votes |
def get_view_matrix(self, alpha): """ Returns camera matrix for handling image and coordinates distortion and undistortion. Based on alpha, up to all pixels of the distorted image can be visible in the undistorted image. :param alpha: Free scaling parameter between 0 (when all the pixels in the undistorted image are valid) and 1 (when all the source image pixels are retained in the undistorted image). For convenience for -1 returns custom camera matrix self.Kundistortion and None returns self.K. :type alpha: float or None :return: camera matrix for a view defined by alpha :rtype: array, shape=(3, 3) """ if alpha == -1: Kundistortion = self.Kundistortion elif alpha is None: Kundistortion = self.K elif self.calibration_type == 'opencv': Kundistortion, _ = cv2.getOptimalNewCameraMatrix(self.K, self.opencv_dist_coeff, tuple(self.size_px), alpha) elif self.calibration_type == 'opencv_fisheye': Kundistortion = cv2.fisheye.estimateNewCameraMatrixForUndistortRectify(self.K, self.opencv_dist_coeff, tuple(self.size_px), self.R, balance=alpha) else: # TODO assert False, 'not implemented' return Kundistortion