簡體   English   中英

顯式數學運算在opencv中給出錯誤結果

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM