omnidirectional camera calibration toolbox
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.

Omnidirectional camera calibration toolbox

This package consists of three parts.

  • omnidirectional camera calibration
  • random pattern calibration object
  • multiple camera calibration


  • OpenCV 3.0

This package is selected as a project in GSoC 2015 of OpenCV, mentored by Bo Li. This repository is a standalone project during my development, you may notice that the directory structure is the same as OpenCV. Now, it is merged into OpenCV's opencv_contrib repository. You can use it by compiling OpenCV with opencv_contrib or adding source files and include files in this repository to your project.


Add files in src and include to where they should be, it depends on your development environment.

For omnidirectional camera calibration, use function cv::omnidir::calibrate in omnidir.cpp. This is API is fully compatible with OpenCV's cv::calibrateCamera.

For random pattern calibration object, use class RandomPatternCornerFinder in randpattern.cpp.

For multiple camera calibration, use class MultiCameraCalibration in multicalib.cpp. So far, multiple camera calibration only support random pattern object. The name of calibration images are required to be "cameraIdx-timestamp.*" and cameraIdx starts from 0. Other name rules will not work!


In the samples directory, there are several samples that describe how to use these APIs. These samples are something like samples in OpenCV, i.e., they are some programs that can be directly used for your application like calibration. Data to be used to run samples is in data directory.


In the tutorial directory, step by step tutorials are given.

A Video

This is a video that shows some results of this package.

Future Work

Revise the API of multiple camera calibration to be more general so that object points and image points from each camera and view are given.