Skip to content

Instantly share code, notes, and snippets.

@hackintoshrao
Created June 10, 2017 02:30
Show Gist options
  • Select an option

  • Save hackintoshrao/5b40dd4a1ba814c7fb26569f50510e23 to your computer and use it in GitHub Desktop.

Select an option

Save hackintoshrao/5b40dd4a1ba814c7fb26569f50510e23 to your computer and use it in GitHub Desktop.
calibrate the camera and undistort the image.
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 idx, fname in enumerate(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)
# Draw and display the corners
cv2.drawChessboardCorners(img, (9,6), corners, ret)
write_name = 'board'+str(idx)+'.jpg'
cv2.imwrite(write_name, img)
# Test undistortion on an image
img = cv2.imread('camera_cal/calibration1.jpg')
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)
# undistort the image using camera matrix and distortion co-efficients.
dst = cv2.undistort(img, mtx, dist, None, mtx)
# save the undistorted image.
cv2.imwrite('result/test_undist.jpg',dst)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment