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_board_h
00029 #define _Aruco_board_h
00030 #include <opencv2/opencv.hpp>
00031 #include <string>
00032 #include <vector>
00033 #include <aruco/exports.h>
00034 #include <aruco/marker.h>
00035 using namespace std;
00036 namespace aruco {
00040 struct ARUCO_EXPORTS MarkerInfo:public vector<cv::Point3f> {
00041 MarkerInfo() : id(-1) {}
00042 MarkerInfo(int _id) : id(_id) {}
00043 MarkerInfo(const MarkerInfo&MI): vector<cv::Point3f>(MI){id=MI.id; }
00044 MarkerInfo & operator=(const MarkerInfo&MI){
00045 vector<cv::Point3f> ::operator=(MI);
00046 id=MI.id;
00047 return *this;
00048 }
00049 int id;
00050 };
00051
00069 class ARUCO_EXPORTS BoardConfiguration: public vector<MarkerInfo>
00070 {
00071 friend class Board;
00072 public:
00073 enum MarkerInfoType {NONE=-1,PIX=0,METERS=1};
00074
00075 int mInfoType;
00078 BoardConfiguration();
00079
00082 BoardConfiguration(const BoardConfiguration &T);
00083
00086 BoardConfiguration & operator=(const BoardConfiguration &T);
00089 void saveToFile(string sfile)throw (cv::Exception);
00092 void readFromFile(string sfile)throw (cv::Exception);
00095 bool isExpressedInMeters()const {
00096 return mInfoType==METERS;
00097 }
00100 bool isExpressedInPixels()const {
00101 return mInfoType==PIX;
00102 }
00105 int getIndexOfMarkerId(int id)const;
00108 const MarkerInfo& getMarkerInfo(int id)const throw (cv::Exception);
00111 void getIdList(vector<int> &ids,bool append=true)const;
00112 private:
00115 void saveToFile(cv::FileStorage &fs)throw (cv::Exception);
00118 void readFromFile(cv::FileStorage &fs)throw (cv::Exception);
00119 };
00120
00123 class ARUCO_EXPORTS Board:public vector<Marker>
00124 {
00125
00126 public:
00127 BoardConfiguration conf;
00128
00129 cv::Mat Rvec,Tvec;
00132 Board()
00133 {
00134 Rvec.create(3,1,CV_32FC1);
00135 Tvec.create(3,1,CV_32FC1);
00136 for (int i=0;i<3;i++)
00137 Tvec.at<float>(i,0)=Rvec.at<float>(i,0)=-999999;
00138 }
00139
00143 void glGetModelViewMatrix(double modelview_matrix[16])throw(cv::Exception);
00144
00155 void OgreGetPoseParameters( double position[3], double orientation[4] )throw(cv::Exception);
00156
00157
00160 void saveToFile(string filePath)throw(cv::Exception);
00163 void readFromFile(string filePath)throw(cv::Exception);
00164
00165 };
00166 }
00167
00168 #endif