Camera Calibration with Python — OpenCV — GeeksforGeeks

priya raj
3 min readSep 22, 2020

A camera is an integral part of several domains like robotics, space exploration, etc camera is playing a major role. It helps to capture each and every moment and helpful for many analyses. In order to use the camera as a visual sensor, we should know the parameters of the camera. Camera Calibration is nothing but estimating the parameters of a camera, parameters about the camera are required to determine an accurate relationship between a 3D point in the real world and its corresponding 2D projection (pixel) in the image captured by that calibrated camera.

We need to consider both internal parameters like focal length, optical center, and radial distortion coefficients of the lens etc., and external parameters like rotation and translation of the camera with respect to some real world coordinate system.

Required libraries:

  • OpenCVlibrary in python is a computer vision library, mostly used for image processing, video processing, and analysis, facial recognition and detection, etc.
  • Numpyis a general-purpose array-processing package. It provides a high-performance multidimensional array object and tools for working with these arrays.

Camera Calibration can be done in a step-by-step approach:

  • Step 1: First define real world coordinates of 3D points using known size of checkerboard pattern.
  • Step 2: Different viewpoints of check-board image is captured.
  • Step 3: findChessboardCorners() is a method in OpenCV and used to find pixel coordinates (u, v) for each 3D point in different images
  • Step 4: Then calibrateCamera() method is used to find camera parameters.

It will take our calculated (threedpoints, twodpoints, grayColor.shape[::-1], None, None) as parameters and returns list having elements as Camera matrix, Distortion coefficient, Rotation Vectors, and Translation Vectors.

Camera Matrix helps to transform 3D objects points to 2D image points and the Distortion Coefficient returns the position of the camera in the world, with the values of Rotation and Translation vectors

Below is the complete program of the above approach:

Python3

Input:

Output:

Camera matrix: [[ 36.26378216 0. 125.68539168] [ 0. 36.76607372 142.49821147] [ 0. 0. 1. ]]Distortion coefficient:  [[-1.25491812e-03 9.89269357e-05 -2.89077718e-03 4.52760939e-04 -3.29964245e-06]] Rotation Vectors: [array([[-0.05767492], [ 0.03549497], [ 1.50906953]]), array([[-0.09301982], [-0.01034321], [ 3.07733805]]), array([[-0.02175332], [ 0.05611105], [-0.07308161]])]Translation Vectors: [array([[ 4.63047351], [-3.74281386], [ 1.64238108]]), array([[2.31648737], [3.98801521], [1.64584622]]), array([[-3.17548808], [-3.46022466], [ 1.68200157]])]

Originally published at https://www.geeksforgeeks.org on September 22, 2020.

Sign up to discover human stories that deepen your understanding of the world.

Free

Distraction-free reading. No ads.

Organize your knowledge with lists and highlights.

Tell your story. Find your audience.

Membership

Read member-only stories

Support writers you read most

Earn money for your writing

Listen to audio narrations

Read offline with the Medium app

priya raj
priya raj

Written by priya raj

Freelancer, Software Consultant. Having Industrial experience of around 12 + years of experience in the fields of Java, Android,SQL,MongoDB

No responses yet

Write a response