现在,按照前面的 out 文件的说明,把 bundle.out 文件 读入内存中。 在 bundle 中,有一系列 out 文件,如bundle.init.out、 bundle_001.out、 bundle.rd.out 等
先定义几个结构体:
//在图像中的位置
struct outPOINT2D
{
int n;//图片个数
int sift_num;//sift序号
double x;//在图上的位置 (2D点)
double y;//
};
// 3D点
struct outPOINT3D
{
double x; //3D点坐标
double y;
double z;
byte r; //点颜色
byte g;
byte b;
int p2_num; //2D点数
struct outPOINT2D * p2; //存放所有2D点
};
struct outCamera //相机参数
{
double f; //焦距
double R[9]; //旋转矩阵
double t[3]; //平移矩阵
double k[2]; //两个崎变参数
};
struct outPointCloud //点云(总out文件)
{
int p_num; //点个数
int num_cam; //相机数
struct outCamera * c;//存放所有相机参数
struct outPOINT3D * p;//存放所有点坐标和颜色
};
用一个函数来加载这个out文件
//装入 out 点云数据
struct outPointCloud *LoadOut(char *name)
{
FILE *fp1;
char buff[255];
//打开文件
if((fp1=fopen(name,"r"