Python cv2.drawChessboardCorners() Examples
The following are 9
code examples of cv2.drawChessboardCorners().
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: video.py From cvcalib with Apache License 2.0 | 6 votes |
def add_corners(self, i_frame, subpixel_criteria, frame_folder_path=None, save_image=False, save_chekerboard_overlay=False): grey_frame = cv2.cvtColor(self.frame, cv2.COLOR_BGR2GRAY) cv2.cornerSubPix(grey_frame, self.current_image_points, (11, 11), (-1, -1), subpixel_criteria) if save_image: png_path = (os.path.join(frame_folder_path, "{0:s}{1:04d}{2:s}".format(self.name, i_frame, ".png"))) cv2.imwrite(png_path, self.frame) if save_chekerboard_overlay: png_path = (os.path.join(frame_folder_path, "checkerboard_{0:s}{1:04d}{2:s}".format(self.name, i_frame, ".png"))) overlay = self.frame.copy() cv2.drawChessboardCorners(overlay, self.current_board_dims, self.current_image_points, True) cv2.imwrite(png_path, overlay) self.usable_frames[i_frame] = len(self.image_points) self.image_points.append(self.current_image_points)
Example #2
Source File: calibrate_camera.py From derplearning with MIT License | 5 votes |
def live_calibrate(camera, pattern_shape, n_matches_needed): """ Find calibration parameters as the user moves a checkerboard in front of the camera """ print("Looking for %s checkerboard" % (pattern_shape,)) criteria = (cv2.TERM_CRITERIA_EPS + cv2.TERM_CRITERIA_MAX_ITER, 30, 0.001) example_3d = np.zeros((pattern_shape[0] * pattern_shape[1], 3), np.float32) example_3d[:, :2] = np.mgrid[0 : pattern_shape[1], 0 : pattern_shape[0]].T.reshape(-1, 2) points_3d = [] points_2d = [] while len(points_3d) < n_matches_needed: ret, frame = camera.cap.read() assert ret gray_frame = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY) ret, corners = cv2.findCirclesGrid( gray_frame, pattern_shape, flags=cv2.CALIB_CB_ASYMMETRIC_GRID ) cv2.imshow("camera", frame) if ret: points_3d.append(example_3d.copy()) points_2d.append(corners) print("Found calibration %i of %i" % (len(points_3d), n_matches_needed)) drawn_frame = cv2.drawChessboardCorners(frame, pattern_shape, corners, ret) cv2.imshow("calib", drawn_frame) cv2.waitKey(10) ret, camera_matrix, distortion_coefficients, _, _ = cv2.calibrateCamera( points_3d, points_2d, gray_frame.shape[::-1], None, None ) assert ret return camera_matrix, distortion_coefficients
Example #3
Source File: calibration.py From StereoVision with GNU General Public License v3.0 | 5 votes |
def _show_corners(self, image, corners): """Show chessboard corners found in image.""" temp = image cv2.drawChessboardCorners(temp, (self.rows, self.columns), corners, True) window_name = "Chessboard" cv2.imshow(window_name, temp) if cv2.waitKey(0): cv2.destroyWindow(window_name)
Example #4
Source File: camera_calibration.py From Advanced_Lane_Lines with MIT License | 4 votes |
def calibrate(drawconer=False): ''' read the calibration image and do the camera calibration and output the result to a pickle file. if drawconer is True, will draw the corner on the chessboard file and save it to another folder. ''' # !!! IMPORTANT, set the nx, ny according the calibration chessboard pictures. nx = 9 ny = 6 # prepare object points, like (0,0,0), (1,0,0), (2,0,0), ...(6,5,0) objp = np.zeros((nx*ny,3), np.float32) objp[:,:2] = np.mgrid[0:nx, 0:ny].T.reshape(-1,2) # Arrays to store object points and image points from all the images. objpoints = [] # 3d points in real world space imgpoints = [] # 2d pionts in image plane. # Make a list of calibration images images = glob.glob('chessboard_img/calibration*.jpg') print("Reading the calibration file...") # Step through the list and search for chessboard corners for idx, fname in enumerate(images): img = cv2.imread(fname) gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) # Find the chessboard corners print("Searching corners on ", fname, "...") ret, corners = cv2.findChessboardCorners(gray, (nx,ny), None) # If found, add object points, image points if ret == True: objpoints.append(objp) imgpoints.append(corners) if drawconer: cv2.drawChessboardCorners(img, (nx,ny), corners, ret) write_name = 'corners_found'+str(idx)+'.jpg' cv2.imwrite(write_name, img) cv2.imshow('img', img) cv2.waitKey(500) cv2.destroyAllWindows() # Get image size img_size = (img.shape[1],img.shape[0]) # Do camera calibration given object points and image points ret, mtx, dist, rvecs, tvecs = cv2.calibrateCamera(objpoints, imgpoints, img_size, None, None) # Save the camera calibration result for later use (we won't worry about rvecs / tvecs) print("Saving the parameter to file...>>camera_cal.p") dist_pickle = {} dist_pickle["mtx"] = mtx dist_pickle["dist"] = dist pickle_file = open("camera_cal.p", "wb") pickle.dump(dist_pickle, pickle_file) pickle_file.close()
Example #5
Source File: calibration.py From vehicle-detection with GNU General Public License v3.0 | 4 votes |
def calibrate_camera(nx, ny, basepath): """ :param nx: number of grids in x axis :param ny: number of grids in y axis :param basepath: path contains the calibration images :return: write calibration file into basepath as calibration_pickle.p """ objp = np.zeros((nx*ny,3), np.float32) objp[:,:2] = np.mgrid[0:nx,0:ny].T.reshape(-1,2) # Arrays to store object points and image points from all the images. objpoints = [] # 3d points in real world space imgpoints = [] # 2d points in image plane. # Make a list of calibration images images = glob.glob(path.join(basepath, 'calibration*.jpg')) # Step through the list and search for chessboard corners for fname in images: img = cv2.imread(fname) gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY) # Find the chessboard corners ret, corners = cv2.findChessboardCorners(gray, (nx,ny),None) # If found, add object points, image points if ret == True: objpoints.append(objp) imgpoints.append(corners) # Draw and display the corners img = cv2.drawChessboardCorners(img, (nx,ny), corners, ret) cv2.imshow('input image',img) cv2.waitKey(500) cv2.destroyAllWindows() # calibrate the camera img_size = (img.shape[1], img.shape[0]) ret, mtx, dist, rvecs, tvecs = cv2.calibrateCamera(objpoints, imgpoints, img_size, None, None) # Save the camera calibration result for later use (we don't use rvecs / tvecs) dist_pickle = {} dist_pickle["mtx"] = mtx dist_pickle["dist"] = dist destnation = path.join(basepath,'calibration_pickle.p') pickle.dump( dist_pickle, open( destnation, "wb" ) ) print("calibration data is written into: {}".format(destnation)) return mtx, dist
Example #6
Source File: calibration_utils.py From VerifAI with BSD 3-Clause "New" or "Revised" License | 4 votes |
def calibrate_camera(calib_images_dir, verbose=False): """ Calibrate the camera given a directory containing calibration chessboards. :param calib_images_dir: directory containing chessboard frames :param verbose: if True, draw and show chessboard corners :return: calibration parameters """ assert path.exists(calib_images_dir), '"{}" must exist and contain calibration images.'.format(calib_images_dir) # prepare object points, like (0,0,0), (1,0,0), (2,0,0) ....,(6,5,0) objp = np.zeros((6 * 9, 3), np.float32) objp[:, :2] = np.mgrid[0:9, 0:6].T.reshape(-1, 2) # Arrays to store object points and image points from all the images. objpoints = [] # 3d points in real world space imgpoints = [] # 2d points in image plane. # Make a list of calibration images images = glob.glob(path.join(calib_images_dir, 'calibration*.jpg')) # Step through the list and search for chessboard corners for filename in images: img = cv2.imread(filename) gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) # Find the chessboard corners pattern_found, corners = cv2.findChessboardCorners(gray, (9, 6), None) if pattern_found is True: objpoints.append(objp) imgpoints.append(corners) if verbose: # Draw and display the corners img = cv2.drawChessboardCorners(img, (9, 6), corners, pattern_found) cv2.imshow('img',img) cv2.waitKey(500) if verbose: cv2.destroyAllWindows() ret, mtx, dist, rvecs, tvecs = cv2.calibrateCamera(objpoints, imgpoints, gray.shape[::-1], None, None) return ret, mtx, dist, rvecs, tvecs
Example #7
Source File: calibrate.py From pyslam with GNU General Public License v3.0 | 4 votes |
def processImage(fn): print('processing %s... ' % fn) img = cv.imread(fn, 0) if img is None: print("Failed to load", fn) return None assert w == img.shape[1] and h == img.shape[0], ("size: %d x %d ... " % (img.shape[1], img.shape[0])) found, corners = cv.findChessboardCorners(img, pattern_size) if found: term = (cv.TERM_CRITERIA_EPS + cv.TERM_CRITERIA_COUNT, 30, 0.1) cv.cornerSubPix(img, corners, (5, 5), (-1, -1), term) if debug_dir: vis = cv.cvtColor(img, cv.COLOR_GRAY2BGR) cv.drawChessboardCorners(vis, pattern_size, corners, found) _path, name, _ext = splitfn(fn) outfile = os.path.join(debug_dir, name + '_chess.png') cv.imwrite(outfile, vis) if not found: print('chessboard not found') return None print(' %s... OK' % fn) return (corners.reshape(-1, 2), pattern_points)
Example #8
Source File: single_camera_calibration.py From stereoDepth with Apache License 2.0 | 4 votes |
def calibrate(dirpath, prefix, image_format, square_size, width=9, height=6): """ Apply camera calibration operation for images in the given directory path. """ # prepare object points, like (0,0,0), (1,0,0), (2,0,0) ....,(8,6,0) objp = np.zeros((height*width, 3), np.float32) objp[:, :2] = np.mgrid[0:width, 0:height].T.reshape(-1, 2) objp = objp * square_size # Create real world coords. Use your metric. # Arrays to store object points and image points from all the images. objpoints = [] # 3d point in real world space imgpoints = [] # 2d points in image plane. # Directory path correction. Remove the last character if it is '/' if dirpath[-1:] == '/': dirpath = dirpath[:-1] # Get the images images = glob.glob(dirpath+'/' + prefix + '*.' + image_format) # Iterate through the pairs and find chessboard corners. Add them to arrays # If openCV can't find the corners in an image, we discard the image. for fname in images: img = cv2.imread(fname) gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) # Find the chess board corners ret, corners = cv2.findChessboardCorners(gray, (width, height), None) # If found, add object points, image points (after refining them) if ret: objpoints.append(objp) corners2 = cv2.cornerSubPix(gray, corners, (11, 11), (-1, -1), criteria) imgpoints.append(corners2) # Draw and display the corners # Show the image to see if pattern is found ! imshow function. img = cv2.drawChessboardCorners(img, (width, height), corners2, ret) ret, mtx, dist, rvecs, tvecs = cv2.calibrateCamera(objpoints, imgpoints, gray.shape[::-1], None, None) return [ret, mtx, dist, rvecs, tvecs]
Example #9
Source File: calibration.py From driving-lane-departure-warning with GNU General Public License v3.0 | 4 votes |
def calibrate_camera(nx, ny, basepath): """ :param nx: number of grids in x axis :param ny: number of grids in y axis :param basepath: path contains the calibration images :return: write calibration file into basepath as calibration_pickle.p """ objp = np.zeros((nx*ny,3), np.float32) objp[:,:2] = np.mgrid[0:nx,0:ny].T.reshape(-1,2) # Arrays to store object points and image points from all the images. objpoints = [] # 3d points in real world space imgpoints = [] # 2d points in image plane. # Make a list of calibration images images = glob.glob(path.join(basepath, 'calibration*.jpg')) # Step through the list and search for chessboard corners for fname in images: img = cv2.imread(fname) gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY) # Find the chessboard corners ret, corners = cv2.findChessboardCorners(gray, (nx,ny),None) # If found, add object points, image points if ret == True: objpoints.append(objp) imgpoints.append(corners) # Draw and display the corners img = cv2.drawChessboardCorners(img, (nx,ny), corners, ret) cv2.imshow('input image',img) cv2.waitKey(500) cv2.destroyAllWindows() # calibrate the camera img_size = (img.shape[1], img.shape[0]) ret, mtx, dist, rvecs, tvecs = cv2.calibrateCamera(objpoints, imgpoints, img_size, None, None) # Save the camera calibration result for later use (we don't use rvecs / tvecs) dist_pickle = {} dist_pickle["mtx"] = mtx dist_pickle["dist"] = dist destnation = path.join(basepath,'calibration_pickle.p') pickle.dump( dist_pickle, open( destnation, "wb" ) ) print("calibration data is written into: {}".format(destnation)) return mtx, dist