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 "exports.h"
00031 #include <opencv2/core/core.hpp>
00032 #include <string>
00033 using namespace std;
00034 namespace aruco {
00038 class ARUCO_EXPORTS CameraParameters {
00039 public:
00040
00041 cv::Mat CameraMatrix;
00042
00043 cv::Mat Distorsion;
00044
00045 cv::Size CamSize;
00046
00049 CameraParameters();
00055 CameraParameters(cv::Mat cameraMatrix, cv::Mat distorsionCoeff, cv::Size size) throw(cv::Exception);
00061 void setParams(cv::Mat cameraMatrix, cv::Mat distorsionCoeff, cv::Size size) throw(cv::Exception);
00064 CameraParameters(const CameraParameters &CI);
00065
00068 bool isValid() const {
00069 return CameraMatrix.rows != 0 && CameraMatrix.cols != 0 && Distorsion.rows != 0 && Distorsion.cols != 0 && CamSize.width != -1 && CamSize.height != -1;
00070 }
00073 CameraParameters &operator=(const CameraParameters &CI);
00076 void readFromFile(string path) throw(cv::Exception);
00079 void saveToFile(string path, bool inXML = true) throw(cv::Exception);
00080
00083 void readFromXMLFile(string filePath) throw(cv::Exception);
00084
00087 void resize(cv::Size size) throw(cv::Exception);
00088
00092 static cv::Point3f getCameraLocation(cv::Mat Rvec, cv::Mat Tvec);
00093
00105 void glGetProjectionMatrix(cv::Size orgImgSize, cv::Size size, double proj_matrix[16], double gnear, double gfar, bool invert = false) throw(cv::Exception);
00106
00117 void OgreGetProjectionMatrix(cv::Size orgImgSize, cv::Size size, double proj_matrix[16], double gnear, double gfar,
00118 bool invert = false) throw(cv::Exception);
00119
00120
00123 static cv::Mat getRTMatrix(const cv::Mat &R_, const cv::Mat &T_, int forceType);
00124
00125 private:
00126
00127
00128 static void argConvGLcpara2(double cparam[3][4], int width, int height, double gnear, double gfar, double m[16], bool invert) throw(cv::Exception);
00129 static int arParamDecompMat(double source[3][4], double cpara[3][4], double trans[3][4]) throw(cv::Exception);
00130 static double norm(double a, double b, double c);
00131 static double dot(double a1, double a2, double a3, double b1, double b2, double b3);
00132 };
00133 }
00134 #endif