我在读取相机参数文件时遇到了 fscanf 函数的问题。我正在使用 QT 4.7,编写 QT 小部件应用程序。执行第一个 fscanf 语句时出现分段错误。但是当我在控制台应用程序项目中执行代码时,它运行良好。
这是我的代码的一部分:
struct parametry_kamery
{
float cc[2],fc[2],alpha_c,kc[5];
int D,al;
};
parametry_kamery kam_par;
void Widget::readParameters(parametry_kamery* kam_par)
{
FILE *fi;
char buf[255];
float cc1=0,cc2=0;
fi=fopen("Camera parameters.cfg", "r");
if(!fi)
{
QMessageBox::information(this,tr("Can't read file"),tr("Error"));
return;
}
while('\n'!=fgetc(fi));
fscanf(fi,"%s %s %s %f %f",buf,buf,buf,&cc1,&cc2);
kam_par->fc[0] = cc1;
kam_par->fc[1] = cc2;
fclose(fi);
}
我正在调用函数 readParameters(&kam_par);
这是文件的内容:
Parametry_wewnętrzne_kamery
Focal_Length: fc = 1079.33793 1181.44679 ± [ 2.44878 2.52105]
Principal_point: cc = 378.95649 245.99109 ± [ 3.48032 2.99878 ]
Skew: alpha_c = 0.00000 ± 0.00000 => angle of pixel axes = 90.00000 ± 0.00000 degrees
Distortion: kc = -0.13666 -0.01830 -0.00070 0.00134 0.00000