#ifndef CALIBRATOR_H #define CALIBRATOR_H #include #include #include "CalibrationData.h" class Calibrator { public: Calibrator(); ~Calibrator(); void addFrameSequence(std::vector &frameSeq); void reset(); CalibrationData * calibrate(); std::vector extract_board_corners(cv::Mat &gray_image); bool decode_gray_set(int i , cv::Mat & pattern_image, cv::Mat & min_max_image); void setBoardRows(int rows); void setBoardCols(int cols); void setCornerSize(double cornerSize); void setDotDiameter(double dotDiameter); void setCalibBoard(unsigned board); const static unsigned Chessboard = 0x00; const static unsigned Circular = 0x01; protected: std::vector< std::vector > frameSeqs; std::vector< std::vector > board_corners; std::vector< std::vector > projector_corners; std::vector pattern_list; cv::Size2f corner_size = cv::Size2f(20.f , 20.f); cv::Size board_size = cv::Size(8 , 6); int board_rows = 8; int board_cols = 6; double dot_dis = 20.0; double dot_diameter = 7.5; unsigned board_type = Chessboard; unsigned threshold = 10; float b = 0.5; unsigned m = 5; }; #endif // CALIBRATOR_H