diff options
Diffstat (limited to 'tracker-aruco/include/marker.h')
-rw-r--r-- | tracker-aruco/include/marker.h | 143 |
1 files changed, 0 insertions, 143 deletions
diff --git a/tracker-aruco/include/marker.h b/tracker-aruco/include/marker.h deleted file mode 100644 index 360eae72..00000000 --- a/tracker-aruco/include/marker.h +++ /dev/null @@ -1,143 +0,0 @@ -/***************************** -Copyright 2011 Rafael Muñoz Salinas. All rights reserved. - -Redistribution and use in source and binary forms, with or without modification, are -permitted provided that the following conditions are met: - - 1. Redistributions of source code must retain the above copyright notice, this list of - conditions and the following disclaimer. - - 2. Redistributions in binary form must reproduce the above copyright notice, this list - of conditions and the following disclaimer in the documentation and/or other materials - provided with the distribution. - -THIS SOFTWARE IS PROVIDED BY Rafael Muñoz Salinas ''AS IS'' AND ANY EXPRESS OR IMPLIED -WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND -FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL Rafael Muñoz Salinas OR -CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR -CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR -SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON -ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF -ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -The views and conclusions contained in the software and documentation are those of the -authors and should not be interpreted as representing official policies, either expressed -or implied, of Rafael Muñoz Salinas. -********************************/ -#ifndef _Aruco_Marker_H -#define _Aruco_Marker_H -#include <vector> -#include <iostream> -#include <opencv2/core.hpp> -#include "exports.h" -#include "cameraparameters.h" -namespace aruco { -using namespace std; -/**\brief This class represents a marker. It is a vector of the fours corners ot the marker - * - */ - -class ARUCO_EXPORTS Marker: public std::vector<cv::Point2f> -{ -public: - //id of the marker - int id; - //size of the markers sides in meters - float ssize; - //matrices of rotation and translation respect to the camera - cv::Mat Rvec,Tvec; - - /** - */ - Marker(); - /** - */ - Marker(const Marker &M); - /** - */ - Marker(const std::vector<cv::Point2f> &corners,int _id=-1); - /** - */ - ~Marker() {} - /**Indicates if this object is valid - */ - bool isValid()const{return id!=-1 && size()==4;} - - /**Draws this marker in the input image - */ - void draw(cv::Mat &in, cv::Scalar color, int lineWidth=1,bool writeId=true)const; - - /**Calculates the extrinsics (Rvec and Tvec) of the marker with respect to the camera - * @param markerSize size of the marker side expressed in meters - * @param CP parmeters of the camera - * @param setYPerperdicular If set the Y axis will be perpendicular to the surface. Otherwise, it will be the Z axis - */ - void calculateExtrinsics(float markerSize,const CameraParameters &CP,bool setYPerperdicular=true)noexcept; - /**Calculates the extrinsics (Rvec and Tvec) of the marker with respect to the camera - * @param markerSize size of the marker side expressed in meters - * @param CameraMatrix matrix with camera parameters (fx,fy,cx,cy) - * @param Distorsion matrix with distorsion parameters (k1,k2,p1,p2) - * @param setYPerperdicular If set the Y axis will be perpendicular to the surface. Otherwise, it will be the Z axis - */ - void calculateExtrinsics(float markerSize,cv::Mat CameraMatrix,cv::Mat Distorsion=cv::Mat(),bool setYPerperdicular=true)noexcept; - - /**Given the extrinsic camera parameters returns the GL_MODELVIEW matrix for opengl. - * Setting this matrix, the reference coordinate system will be set in this marker - */ - void glGetModelViewMatrix( double modelview_matrix[16])noexcept; - - /** - * Returns position vector and orientation quaternion for an Ogre scene node or entity. - * Use: - * ... - * Ogre::Vector3 ogrePos (position[0], position[1], position[2]); - * Ogre::Quaternion ogreOrient (orientation[0], orientation[1], orientation[2], orientation[3]); - * mySceneNode->setPosition( ogrePos ); - * mySceneNode->setOrientation( ogreOrient ); - * ... - */ - void OgreGetPoseParameters( double position[3], double orientation[4] )noexcept; - - /**Returns the centroid of the marker - */ - cv::Point2f getCenter()const; - /**Returns the perimeter of the marker - */ - float getPerimeter()const; - /**Returns the area - */ - float getArea()const; - /** - */ - /** - */ - friend bool operator<(const Marker &M1,const Marker&M2) - { - return M1.id<M2.id; - } - /** - */ - friend ostream & operator<<(ostream &str,const Marker &M) - { - str<<M.id<<"="; - for (int i=0;i<4;i++) - str<<"("<<M[i].x<< ","<<M[i].y<<") "; - str<<"Txyz="; - for (int i=0;i<3;i++) - str<<M.Tvec.ptr<float>(0)[i]<<" "; - str<<"Rxyz="; - for (int i=0;i<3;i++) - str<<M.Rvec.ptr<float>(0)[i]<<" "; - - return str; - } - - -private: - void rotateXAxis(cv::Mat &rotation); - -}; - -} -#endif |