Go to the documentation of this file.00001 
00002 
00003 
00004 
00005 
00006 
00007 
00008 
00009 
00010 
00011 
00012 
00013 
00014 
00015 
00016 
00017 
00018 
00019 
00020 
00021 
00022 
00023 
00024 
00025 
00026 
00027 
00028 #ifndef _Aruco_BoardDetector_H
00029 #define _Aruco_BoardDetector_H
00030 #include <opencv2/core/core.hpp>
00031 #include "exports.h"
00032 #include "board.h"
00033 #include "cameraparameters.h"
00034 #include "markerdetector.h"
00035 using namespace std;
00036 
00037 namespace aruco
00038 {
00039 
00065 class ARUCO_EXPORTS  BoardDetector
00066 {
00067 public:
00071     BoardDetector(bool  setYPerpendicular=false);
00072     
00073     
00077     void setParams(const BoardConfiguration &bc,const CameraParameters &cp, float markerSizeMeters=-1);
00078     void setParams(const BoardConfiguration &bc);
00083     float  detect(const cv::Mat &im)throw (cv::Exception);
00086     Board & getDetectedBoard(){return _boardDetected;}
00089     MarkerDetector &getMarkerDetector(){return _mdetector;}
00092     vector<Marker> &getDetectedMarkers(){return _vmarkers;}
00093     
00094     
00095     
00096     
00108     float detect(const vector<Marker> &detectedMarkers,const  BoardConfiguration &BConf, Board &Bdetected, cv::Mat camMatrix=cv::Mat(),cv::Mat distCoeff=cv::Mat(), float markerSizeMeters=-1 )throw (cv::Exception);
00109     float detect(const vector<Marker> &detectedMarkers,const  BoardConfiguration &BConf, Board &Bdetected,const CameraParameters &cp, float markerSizeMeters=-1 )throw (cv::Exception);
00110 
00118     static Board detect(const cv::Mat &Image, const BoardConfiguration &bc,const CameraParameters &cp, float markerSizeMeters=-1);
00119 
00125     void setYPerpendicular(bool enable){_setYPerpendicular=enable;}
00126     void setYPerperdicular(bool enable){ setYPerpendicular(enable); } 
00127     bool isYPerpendicular(){ return _setYPerpendicular; }
00128     
00133     void set_repj_err_thres(float Repj_err_thres){repj_err_thres=Repj_err_thres;}
00134     float get_repj_err_thres  ( )const {return repj_err_thres;}
00135     
00136     
00137 private:
00138     void rotateXAxis(cv::Mat &rotation);
00139     bool _setYPerpendicular;
00140     
00141     
00142     bool _areParamsSet;
00143     BoardConfiguration _bconf;
00144     Board _boardDetected;
00145     float _markerSize,repj_err_thres;
00146     CameraParameters _camParams;
00147     MarkerDetector _mdetector;
00148     vector<Marker> _vmarkers;
00149     
00150 };
00151 
00152 };
00153 #endif
00154