カメラ パラメータ ファイルの読み込み中に 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