我不时有这个bug。我这次必须揭开它。
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。但这不是一个好方法,不是吗?
你对此有何评论?
谢谢!
答案 0 :(得分:2)
如果您正在使用C或C ++,您的编译器可能会将您的常量解释为类型int
并对它们执行整数运算,然后仅在完成后将最终结果转换为double
。请尝试以下方法:
double num = (-90.0-15.0)/180.0*CV_PI;
在旁注中,如果您知道显式数字(例如num
值),则最好手动输入数字。这将使程序不必在运行时计算它。作为优化过程的一部分,许多编译器都会为您执行此操作,但不需要它们。