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()这在旧版本的标准库中可能不可用。

微软似乎_finite()也在<float.h>.

于 2012-08-23T13:04:52.820 回答