• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 #ifndef CV_CHESSBOARDGENERATOR_H143KJTVYM389YTNHKFDHJ89NYVMO3VLMEJNTBGUEIYVCM203P
2 #define CV_CHESSBOARDGENERATOR_H143KJTVYM389YTNHKFDHJ89NYVMO3VLMEJNTBGUEIYVCM203P
3 
4 #include "opencv2/calib3d.hpp"
5 
6 namespace cv
7 {
8 
9 class ChessBoardGenerator
10 {
11 public:
12     double sensorWidth;
13     double sensorHeight;
14     size_t squareEdgePointsNum;
15     double min_cos;
16     mutable double cov;
17     Size patternSize;
18     int rendererResolutionMultiplier;
19 
20     ChessBoardGenerator(const Size& patternSize = Size(8, 6));
21     Mat operator()(const Mat& bg, const Mat& camMat, const Mat& distCoeffs, std::vector<Point2f>& corners) const;
22     Mat operator()(const Mat& bg, const Mat& camMat, const Mat& distCoeffs, const Size2f& squareSize, std::vector<Point2f>& corners) const;
23     Mat operator()(const Mat& bg, const Mat& camMat, const Mat& distCoeffs, const Size2f& squareSize, const Point3f& pos, std::vector<Point2f>& corners) const;
24     Size cornersSize() const;
25 
26     mutable std::vector<Point3f> corners3d;
27 private:
28     void generateEdge(const Point3f& p1, const Point3f& p2, std::vector<Point3f>& out) const;
29     Mat generateChessBoard(const Mat& bg, const Mat& camMat, const Mat& distCoeffs,
30         const Point3f& zero, const Point3f& pb1, const Point3f& pb2,
31         float sqWidth, float sqHeight, const std::vector<Point3f>& whole, std::vector<Point2f>& corners) const;
32     void generateBasis(Point3f& pb1, Point3f& pb2) const;
33 
34     Mat rvec, tvec;
35 };
36 
37 }
38 
39 
40 #endif
41