我时常遇到这个错误。这次我必须揭开它。
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
值),最好手动输入数字。这将使程序不必在运行时计算它。作为优化过程的一部分,许多编译器无论如何都会为您执行此操作,但这不是必需的。
关于c++ - 显式数学运算在 opencv 中给出不正确的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17280339/