繁体   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