我有:
double score = cvMatchContourTrees( CT1, CT2, CV_CONTOUR_TREES_MATCH_I1, 0.0 );
cout<<score<<endl;
返回值中出现了-1.#IND。除此之外,正常的值如1.34543都是正常的。
为什么会出现这种情况?我该如何解决?
我有:
double score = cvMatchContourTrees( CT1, CT2, CV_CONTOUR_TREES_MATCH_I1, 0.0 );
cout<<score<<endl;
返回值中出现了-1.#IND。除此之外,正常的值如1.34543都是正常的。
为什么会出现这种情况?我该如何解决?
如Frederic所说,这是由Visual Studio在Windows上构建的应用程序格式化了“Not a Number”的结果。John D Cook有一个非常好的参考资料:
Windows将NaN显示为-1.#IND(“IND”代表“不确定”),而Linux则显示nan。
...
简而言之,如果你得到了1.#INF或inf,请查找是否存在溢出或除以零。如果你得到了1.#IND或nan,请查找是否存在非法操作。
如果你对字符串进行任何格式化处理,请注意截断问题;我自己在处理这些错误时遇到过相关问题。
0/0
是否会产生 NaN
。我认为它就像其他除以零一样,你会从操作系统得到一个浮点异常。 - Lightness Races in Orbit依据我的经验,-1.#IND
的出现来自于虚数。因此,执行 cout << sqrt(-1.);
应该会输出 -1.#IND
。
#IND
是NaN的意思。您可能希望阅读此文章(http://www.johndcook.com/IEEE_exceptions_in_cpp.html)了解更多信息。 - Frédéric HamidicvMatchContourTrees
е’ҢOpenCVеңЁиҝҷдёӘй—®йўҳдёӯе®Ңе…ЁжҳҜиҜҜеҜјгҖӮ - Lightness Races in Orbit