本文整理匯總了Python中cv2.drawChessboardCorners方法的典型用法代碼示例。如果您正苦於以下問題:Python cv2.drawChessboardCorners方法的具體用法?Python cv2.drawChessboardCorners怎麽用?Python cv2.drawChessboardCorners使用的例子?那麽, 這裏精選的方法代碼示例或許可以為您提供幫助。您也可以進一步了解該方法所在類cv2
的用法示例。
在下文中一共展示了cv2.drawChessboardCorners方法的8個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的Python代碼示例。
示例1: add_corners
# 需要導入模塊: import cv2 [as 別名]
# 或者: from cv2 import drawChessboardCorners [as 別名]
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)
示例2: _show_corners
# 需要導入模塊: import cv2 [as 別名]
# 或者: from cv2 import drawChessboardCorners [as 別名]
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)
示例3: live_calibrate
# 需要導入模塊: import cv2 [as 別名]
# 或者: from cv2 import drawChessboardCorners [as 別名]
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
示例4: processImage
# 需要導入模塊: import cv2 [as 別名]
# 或者: from cv2 import drawChessboardCorners [as 別名]
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)
示例5: calibrate
# 需要導入模塊: import cv2 [as 別名]
# 或者: from cv2 import drawChessboardCorners [as 別名]
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()
示例6: calibrate_camera
# 需要導入模塊: import cv2 [as 別名]
# 或者: from cv2 import drawChessboardCorners [as 別名]
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
示例7: calibrate_camera
# 需要導入模塊: import cv2 [as 別名]
# 或者: from cv2 import drawChessboardCorners [as 別名]
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
示例8: calibrate
# 需要導入模塊: import cv2 [as 別名]
# 或者: from cv2 import drawChessboardCorners [as 別名]
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]