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/opencv.hpp>
00031 #include <aruco/exports.h>
00032 #include <aruco/board.h>
00033 #include <aruco/cameraparameters.h>
00034 #include <aruco/markerdetector.h>
00035 using namespace std;
00036
00037 namespace aruco
00038 {
00039
00065 class ARUCO_EXPORTS BoardDetector
00066 {
00067 public:
00071 BoardDetector(bool setYPerpendicular=true);
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
00111
00117 void setYPerpendicular(bool enable){_setYPerpendicular=enable;}
00118
00119
00120
00121
00122 private:
00123 void rotateXAxis(cv::Mat &rotation);
00124 bool _setYPerpendicular;
00125
00126
00127 bool _areParamsSet;
00128 BoardConfiguration _bconf;
00129 Board _boardDetected;
00130 float _markerSize;
00131 CameraParameters _camParams;
00132 MarkerDetector _mdetector;
00133 vector<Marker> _vmarkers;
00134
00135 };
00136
00137 };
00138 #endif
00139