In [3]:
import cv2
import glob
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.image as mpimg
In [4]:
cal_images = glob.glob("calibration/calibration*.jpg")
In [6]:
objpoints = []
imgpoints = []
ny = 6
nx = 9
objp = np.zeros((ny*nx, 3), np.float32)
objp[:,:2] = np.mgrid[0:nx, 0:ny].T.reshape(-1,2)
for calibrate in cal_images:
img = mpimg.imread(calibrate)
gray = cv2.cvtColor(img, cv2.COLOR_RGB2GRAY)
ret, corners = cv2.findChessboardCorners(gray, (nx, ny), None)
if ret == True:
f, (ax1,ax2) = plt.subplots(1,2, figsize=(16,9))
ax1.imshow(img)
imgpoints.append(corners)
objpoints.append(objp)
img = cv2.drawChessboardCorners(img, (nx, ny),corners, ret)
ax2.imshow(img)
plt.show()
In [14]:
ret, mtx, dist, rvecs, tvecs = cv2.calibrateCamera(objpoints, imgpoints, gray.shape[::-1], None, None)
def undistort(img):
return cv2.undistort(img, mtx, dist, None, mtx)
img = cv2.imread("calibration/calibration1.jpg")
dst = undistort(img)
f, (ax1, ax2) = plt.subplots(1, 2, figsize=(16,9))
ax1.set_title("Distorted",fontsize=14)
ax1.imshow(img)
ax2.set_title("Undistorted",fontsize=14)
ax2.imshow(dst)
plt.show()
In [ ]: