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_CameraParameters_H
00029 #define _Aruco_CameraParameters_H
00030 #include <aruco/exports.h>
00031 #include <opencv2/opencv.hpp>
00032 #include <string>
00033 using namespace std;
00034 namespace aruco
00035 {
00039 class ARUCO_EXPORTS CameraParameters
00040 {
00041 public:
00042
00043
00044 cv::Mat CameraMatrix;
00045
00046 cv::Mat Distorsion;
00047
00048 cv::Size CamSize;
00049
00052 CameraParameters() ;
00058 CameraParameters(cv::Mat cameraMatrix,cv::Mat distorsionCoeff,cv::Size size) throw(cv::Exception);
00064 void setParams(cv::Mat cameraMatrix,cv::Mat distorsionCoeff,cv::Size size) throw(cv::Exception);
00067 CameraParameters(const CameraParameters &CI) ;
00068
00071 bool isValid()const {
00072 return CameraMatrix.rows!=0 && CameraMatrix.cols!=0 && Distorsion.rows!=0 && Distorsion.cols!=0 && CamSize.width!=-1 && CamSize.height!=-1;
00073 }
00076 CameraParameters & operator=(const CameraParameters &CI);
00079 void readFromFile(string path)throw(cv::Exception);
00082 void saveToFile(string path,bool inXML=true)throw(cv::Exception);
00083
00086 void readFromXMLFile(string filePath)throw(cv::Exception);
00087
00090 void resize(cv::Size size)throw(cv::Exception);
00091
00095 static cv::Point3f getCameraLocation(cv::Mat Rvec,cv::Mat Tvec);
00096
00107 void glGetProjectionMatrix( cv::Size orgImgSize, cv::Size size,double proj_matrix[16],double gnear,double gfar,bool invert=false )throw(cv::Exception);
00108
00119 void OgreGetProjectionMatrix( cv::Size orgImgSize, cv::Size size,double proj_matrix[16],double gnear,double gfar,bool invert=false )throw(cv::Exception);
00120
00121
00122 private:
00123
00124
00125 static void argConvGLcpara2( double cparam[3][4], int width, int height, double gnear, double gfar, double m[16], bool invert )throw(cv::Exception);
00126 static int arParamDecompMat( double source[3][4], double cpara[3][4], double trans[3][4] )throw(cv::Exception);
00127 static double norm( double a, double b, double c );
00128 static double dot( double a1, double a2, double a3,
00129 double b1, double b2, double b3 );
00130
00131
00132 };
00133
00134 }
00135 #endif
00136
00137