1

Julien Pilet らによって作成されたオープンソース コードを使用しています。「突然の照明の変化に対してロバストな背景減算を行う」というタイトルの下。何も変更せずに実行すると、次のエラーが表示されます。

error C3861: 'finite':identifier not found

確認したところ、このエラーは「imstat.h」ファイルの次の行で発生しました。

if (!finite(det) || det<1e-5) {
        sigma_computed=false;
        n=0;
        one_over_sq_det= 1;
        memset(sigma,0,sizeof(sigma));
        sigma[0][0]=1;
        sigma[1][1]=1;
        sigma[2][2]=1;
        two_ln_sq_det = 2;
    } else {
        one_over_sq_det = 1/sqrtf(det);
        assert(finite(one_over_sq_det));
        two_ln_sq_det = 2*log(sqrtf(det));
        sigma_computed=true;
        n = new_n;
    }

「imstat.h」ファイルは、「emvisi2.h」ファイルのコードによってインクルードされました。誰かがこのエラーを理解するのを手伝ってくれますか? ある種のクラス定義に問題があるようですが、見つかりませんでした。ありがとうございました。

4

1 に答える 1

2

finite()は廃止された BSD ライブラリ関数で、一部のバージョンの<cmath>.

の C++11 バージョン<cmath>または C99 バージョンのをお持ちの場合<math.h>は、同等のものisfinite()を利用できるはずです。これは、標準ライブラリの古いバージョンでは利用できない場合があります。

Microsoft はまた、 で同等の非標準_finite()関数を宣言しているようです<float.h>

于 2012-08-23T13:04:52.820 に答える