[英]explicit math operation gives incorrect result in opencv
我不時有這個錯誤。 這次我必須揭露它。
Mat tRo012 = trans(165, 135, 85)*rotz(-11/180*CV_PI)*rotx((-90-15)/180*CV_PI);
trans,rotz,rotx是接收雙精度類型編號的函數。
我不知道是什么原因導致每次我堆疊更多這樣的操作時,返回值Mat tRo012都會出錯?
我記得遇到過類似以下的錯誤:
double num = (-90-15)/180*CV_PI;
num的值不正確。 我要做的一種解決方法是使用計算器並將顯式結果復制為num。 但這不是一個好方法,不是嗎?
您對此有何評論?
謝謝!
如果您使用的是C或C ++,則編譯器可能會將常量解釋為int
類型,並對它們進行整數運算,然后僅在完成后將最終結果轉換為double
。 請嘗試以下操作:
double num = (-90.0-15.0)/180.0*CV_PI;
另外,如果您知道顯式數字(例如num
值),則最好手動輸入該數字。 這將使程序不必在運行時進行計算。 無論如何,許多編譯器都會在優化過程中為您執行此操作,但並非必須這樣做。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.