2020-10-21 17:24:01 +02:00

85 lines
2.5 KiB
C++
Executable File

#include "calibration_data.h"
vcg::Matrix33f rgb_intrinsics,depth_intrinsics,R;
float rgb_distortion[5];
float depth_distortion[5];
vcg::Point3f T;
int rgb_size[2],raw_rgb_size[2],depth_size[2],raw_depth_size[2];
void DefaultCalibrationData(){
rgb_intrinsics[0][0] = 5.2113739925590016e+02;
rgb_intrinsics[0][2] = 3.1491244343525125e+02;
rgb_intrinsics[1][1] = 5.1991686025545800e+02;
rgb_intrinsics[1][2] = 2.4026344772264517e+02;
float mR[9] = {9.9969879814870832e-01, -4.7653773427246268e-03,
2.4074969549503451e-02, 4.3910927443567907e-03,
9.9986905022011940e-01, 1.5575644976267967e-02,
-2.4146040763208549e-02, -1.5465238139056611e-02,
9.9958881302501768e-01};
R = vcg::Matrix33f(&mR[0]);
T = vcg::Point3f(2.1080184637889673e-02, 5.3046733066992597e-04,
4.0461983367107872e-02 );
}
FILE * f;
bool SkipS(int n){
char waste[255];
for(unsigned int i = 0; i < n; ++i)
if(fscanf(f,"%s",&waste[0])<=0) return false;
return true;
}
bool Read33Matrix(vcg::Matrix33f& m ){
char waste[255];
if(!SkipS(10)) return false;
for(unsigned int i = 0; i < 3; ++i)
for(unsigned int j = 0; j < 3; ++j)
if(fscanf(f,"%f %s",& m[i][j],&waste[0])<=0) return false;
return true;
}
bool ReadDistortion( float d[5]){
char waste[255];
if(!SkipS(10)) return false;
for(unsigned int i = 0; i < 5; ++i)
if(fscanf(f,"%f %s",& d[i],&waste[0])<=0) return false;
return true;
}
bool Read3Vector( vcg::Point3f v){
char waste[255];
if(!SkipS(10)) return false;
for(unsigned int i = 0; i < 3; ++i)
if(fscanf(f,"%f %s",& v[i],&waste[0])<=0) return false;
return true;
}
bool Read2Vector( int d[2]){
char waste[255];
if(!SkipS(10)) return false;
for(unsigned int i = 0; i < 2; ++i)
if(fscanf(f,"%d %s",&d[i],&waste[0])<=0) return false;
return true;
}
bool LoadCalibrationData(QString name){
f = fopen(qPrintable(name),"r");
SkipS(1);//header
if(!Read33Matrix(rgb_intrinsics)) return false;
if(!ReadDistortion(rgb_distortion)) return false;
if(!Read33Matrix(depth_intrinsics)) return false;
if(!ReadDistortion(depth_distortion)) return false;
if(!Read33Matrix(R)) return false;
if(!Read3Vector(T)) return false;
if(!Read2Vector(rgb_size)) return false;
if(! Read2Vector(raw_rgb_size)) return false;
if(!Read2Vector(depth_size)) return false;
if(!Read2Vector(raw_depth_size)) return false;
fclose(f);
return true;
}