import numpy as np import cv2 import matplotlib.pyplot as plt import matplotlib.image as mpimg # prepare object points nx = 8 ny = 6 # Make a list of calibration images fname = 'calibration_test.png' img = cv2.imread(fname) # Convert to grayscale gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) # Find the chessboard corners ret, corners = cv2.findChessboardCorners(gray, (nx, ny), None) # If found, draw corners if ret == True: # Draw and display the corners cv2.drawChessboardCorners(img, (nx, ny), corners, ret) plt.imshow(img)
import numpy as np import cv2 import glob import matplotlib.pyplot as plt from matplotlib.image import imsave as mpsave from matplotlib.image import imread as mpread def get_calibration_mtx(): # 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 img_name_list = glob.glob('../camera_cal/calibration*.jpg') # Step through the list and search for chessboard corners for img_name in img_name_list: img = mpread(img_name) gray = cv2.cvtColor(img,cv2.COLOR_RGB2GRAY) # Find the chessboard corners ret, corners = cv2.findChessboardCorners(gray, (9,6), 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, (9,6), corners, ret) cv2.imshow('img',img) # 'img' is the show window name cv2.waitKey(500) cv2.destroyAllWindows() ret, mtx, dist, rvecs, tvecs = cv2.calibrateCamera(objpoints, imgpoints, gray.shape[::-1], None, None) return mtx, dist
import numpy as np def img_calibration(mtx, dist): img_name = '../camera_cal/calibration.jpg' img_org = mpread(img_name) img_dst = cv2.undistort(img_org, mtx, dist, None, mtx)