私が持っています :
double score = cvMatchContourTrees( CT1, CT2, CV_CONTOUR_TREES_MATCH_I1, 0.0 );
cout<<score<<endl;
-1。#INDとして返される値があります。それ以外は、1.34543のように、正の値は正常です。
なぜこれが起こるのですか?どうすれば解決できますか?
フレデリックが言うように、それは ' Not a Number 'がWindowsのVisual Studioで構築されたアプリケーションによってフォーマットされた結果です。 John D Cookは 優れた参照 を持っています:
WindowsはNaNを-1。#IND(「不定」の「IND」)として表示しますが、Linuxはnanを表示します。
...
つまり、1。#INFまたはinfを取得した場合は、オーバーフローまたはゼロ除算を探します。 1.#INDまたはnanを受け取った場合は、不正な操作を探してください。
文字列で何らかのフォーマットを行う場合は、切り捨てに注意してください。私は 関連する問題 をこの種のエラーを自分で処理するときに遭遇しました。
std::cout << (0/0.f);
// Output: -1.#IND
NaN です。
私の経験では、_-1.#IND
_は虚数から来ています。したがって、cout << sqrt(-1.);
を実行すると_-1.#IND
_が出力されます