A opencv fisheye camera model bindings for Node.js.
install opencv 3.x
For linux
git clone https://github.com/opencv/opencv
mkdir opencv/build
cd opencv/build
cmake ..
sudo make install
For mac
brew tap homebrew/science
brew install opencv@3
brew link --force opencv@3
install npm package
npm install @sigodenjs/fisheye
Download the checkerboard pattern and print it on a paper (letter or A4 size). You also want to attach the paper to a hard, flat surface such as a piece of cardboard. The key here: straight lines need to be straight.
Hold the pattern in front of your camera and capture some images. You want to hold the pattern in different positions and angles. The key here: the patterns need to appear distorted in a different ways (so that OpenCV knows as much about your lens as possible).
let imgs = fs
.readdirSync('example/samples')
.map(file => fs.readFileSync('example/samples/'+file));
let {K, D} = fisheye.calibrate(imgs, 9, 6);
let img = fs.readFileSync('example/samples/IMG-0.jpg');
let buf = fisheye.undistort(img, K, D);
fs.writeFileSync('/tmp/IMG-0.jpg', buf);
Copyright (c) 2018 sigoden
Licensed under the MIT license.