1

我时不时遇到这个错误。这次我必须揭开它。

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 的显式结果。但这不是一个好方法,不是吗?

您对此有何评论?

谢谢!

4

1 回答 1

2

如果您使用 C 或 C++,您的编译器可能会将您的常量解释为类型int并对它们进行整数运算,然后仅将最终结果转换为double完成后的结果。尝试以下操作:

double num = (-90.0-15.0)/180.0*CV_PI;

附带说明一下,如果您知道明确的数字(例如您的num值),最好手动输入数字。这将使程序不必在运行时计算它。作为优化过程的一部分,许多编译器无论如何都会为您执行此操作,但它们不是必需的。

于 2013-06-24T16:32:55.330 回答