mirror of
https://github.com/lucaspalomodevelop/meshlab.git
synced 2026-03-13 00:07:24 +00:00
85 lines
2.5 KiB
C++
Executable File
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;
|
|
}
|