c++ - 显式数学运算在 opencv 中给出不正确的结果

标签 c++ 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 值),最好手动输入数字。这将使程序不必在运行时计算它。作为优化过程的一部分,许多编译器无论如何都会为您执行此操作,但这不是必需的。

关于c++ - 显式数学运算在 opencv 中给出不正确的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17280339/

相关文章:

c++ - 从 QList 中删除一个项目会抛出错误

python-3.x - 如何在cv2中将图像拆分为披萨?

python - 在 python 中使用 OpenCV 创建 Mat

c++ - 在 OpenCV C/C++ 中只过滤掉一个轮廓

c++ - 来自动态值的 Variadic 模板类型

c++ - libcurl,如何为每个句柄附加不同的回调函数?

c++ - SDL2 无法正确绘制矩形

C++在boost线程中调用成员函数

android-studio - 在android studio中使用opencv进行人脸检测。 E/AndroidRuntime:致命异常:main

c++ - 这段代码片段的作用是什么?