#!/usr/bin/env python # coding: utf-8 # In[8]: import numpy as np import cv2 import glob import matplotlib.pyplot as plt # 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('./camera_cal/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, (9,6),None) # If found, add object points, image points if ret == True: objpoints.append(objp) imgpoints.append(corners) # In[9]: img = cv2.imread("./camera_cal/calibration1.jpg") ret, mtx, dist, rvecs, tvecs = cv2.calibrateCamera(objpoints, imgpoints, (img.shape[1], img.shape[0]),None,None) undist = cv2.undistort(img, mtx, dist, None, mtx) # In[10]: get_ipython().run_line_magic('matplotlib', 'inline') plt.imshow(img) # In[11]: plt.imshow(undist) # In[14]: img = plt.imread("./test_images/test1.jpg") ret, mtx, dist, rvecs, tvecs = cv2.calibrateCamera(objpoints, imgpoints, (img.shape[1], img.shape[0]),None,None) undist = cv2.undistort(img, mtx, dist, None, mtx) # In[15]: plt.imshow(img) # In[16]: plt.imshow(undist) # In[ ]: