Path: blob/master/apps/interactive-calibration/calibCommon.hpp
16337 views
// This file is part of OpenCV project.1// It is subject to the license terms in the LICENSE file found in the top-level directory2// of this distribution and at http://opencv.org/license.html.34#ifndef CALIB_COMMON_HPP5#define CALIB_COMMON_HPP67#include <opencv2/core.hpp>89#include <memory>10#include <vector>11#include <string>1213namespace calib14{15#define OVERLAY_DELAY 100016#define IMAGE_MAX_WIDTH 128017#define IMAGE_MAX_HEIGHT 9601819bool showOverlayMessage(const std::string& message);2021enum InputType { Video, Pictures };22enum InputVideoSource { Camera, File };23enum TemplateType { AcirclesGrid, Chessboard, chAruco, DoubleAcirclesGrid };2425static const std::string mainWindowName = "Calibration";26static const std::string gridWindowName = "Board locations";27static const std::string consoleHelp = "Hot keys:\nesc - exit application\n"28"s - save current data to .xml file\n"29"r - delete last frame\n"30"u - enable/disable applying undistortion\n"31"d - delete all frames\n"32"v - switch visualization";3334static const double sigmaMult = 1.96;3536struct calibrationData37{38cv::Mat cameraMatrix;39cv::Mat distCoeffs;40cv::Mat stdDeviations;41cv::Mat perViewErrors;42std::vector<cv::Mat> rvecs;43std::vector<cv::Mat> tvecs;44double totalAvgErr;45cv::Size imageSize;4647std::vector<std::vector<cv::Point2f> > imagePoints;48std::vector< std::vector<cv::Point3f> > objectPoints;4950std::vector<cv::Mat> allCharucoCorners;51std::vector<cv::Mat> allCharucoIds;5253cv::Mat undistMap1, undistMap2;5455calibrationData()56{57imageSize = cv::Size(IMAGE_MAX_WIDTH, IMAGE_MAX_HEIGHT);58}59};6061struct cameraParameters62{63cv::Mat cameraMatrix;64cv::Mat distCoeffs;65cv::Mat stdDeviations;66double avgError;6768cameraParameters(){}69cameraParameters(cv::Mat& _cameraMatrix, cv::Mat& _distCoeffs, cv::Mat& _stdDeviations, double _avgError = 0) :70cameraMatrix(_cameraMatrix), distCoeffs(_distCoeffs), stdDeviations(_stdDeviations), avgError(_avgError)71{}72};7374struct captureParameters75{76InputType captureMethod;77InputVideoSource source;78TemplateType board;79cv::Size boardSize;80int charucoDictName;81int calibrationStep;82float charucoSquareLenght, charucoMarkerSize;83float captureDelay;84float squareSize;85float templDst;86std::string videoFileName;87bool flipVertical;88int camID;89int fps;90cv::Size cameraResolution;91int maxFramesNum;92int minFramesNum;9394captureParameters()95{96calibrationStep = 1;97captureDelay = 500.f;98maxFramesNum = 30;99minFramesNum = 10;100fps = 30;101cameraResolution = cv::Size(IMAGE_MAX_WIDTH, IMAGE_MAX_HEIGHT);102}103};104105struct internalParameters106{107double solverEps;108int solverMaxIters;109bool fastSolving;110double filterAlpha;111112internalParameters()113{114solverEps = 1e-7;115solverMaxIters = 30;116fastSolving = false;117filterAlpha = 0.1;118}119};120}121122#endif123124125