我正在使用由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;
}
“emstat.h”文件包含在“emvisi2.h”文件中。有人可以帮我理解这个错误吗?似乎在某种类定义中存在错误,但我找不到它。谢谢。
答案 0 :(得分:2)
finite()
是一个过时的BSD库函数,您可以在<cmath>
的某些(但不是全部)版本中找到它。
如果你有<cmath>
的C ++ 11版本或<math.h>
的C99版本,则应该有等效的isfinite()
。这可能在旧版本的标准库中不可用。
Microsoft似乎也在<float.h>
中声明了一个等效的非标准_finite()
函数。