import numpy as np import cv2 as cv import glob # Termination criteria criteria = (cv.TERM_CRITERIA_EPS + cv.TERM_CRITERIA_MAX_ITER, 30, 0.001) # Prepare object points, assuming a chessboard with 9 by 6 squares of 30mm square_size = 30 # in millimeters objp = np.zeros((5 * 8, 3), np.float32) objp[:, :2] = np.mgrid[0:8, 0:5].T.reshape(-1, 2) * square_size # 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. images = glob.glob('camera1_images/*.jpg') for fname in images: img = cv.imread(fname) gray = cv.cvtColor(img, cv.COLOR_BGR2GRAY) # Find the chessboard corners ret, corners = cv.findChessboardCorners(gray, (8, 5), None) # If found, add object points, image points (after refining them) if ret == True: objpoints.append(objp) corners2 = cv.cornerSubPix(gray, corners, (11, 11), (-1, -1), criteria) imgpoints.append(corners2) # Draw and display the corners cv.drawChessboardCorners(img, (8, 5), corners2, ret) cv.imshow('img', img) cv.waitKey(400) cv.destroyAllWindows() ret, mtx, dist, rvecs, tvecs = cv.calibrateCamera(objpoints, imgpoints, gray.shape[::-1], None, None)