首页 > 解决方案 > 非图像基本结构中的 OpenCV 浮点数与双精度数

问题描述

我理解为什么人们可能会选择在 OpenCV 的大图像中使用浮点数而不是双精度数,因为它减少了图像所需的内存。但是对于相机矩阵、旋转矩阵、平移向量和 2D/3D 点等其他 OpenCV 对象,是否有理由更喜欢 float 而不是 double?

我了解 OpenCV 倾向于抱怨您尝试使用不同类型的矩阵和向量执行数学运算(例如,执行涉及浮点图像的像素值及其在双 OpenCV 结构表示的图像中的相应位置的数学运算)是(对我来说很明显)使用浮点数的动机来自哪里?

标签: opencvfloating-point

解决方案


您可以获得某些情况下float更快的计算:double

1)如果您的硬件不支持double,但支持float(一些微控制器,一些 GPGPU)

2)如果float计算比double计算快(某些处理器上的 sqrt/divide)

3)如果您的计算是可向量化的,并且您的向量单元可以float并行操作更多的元素而不是double元素(大多数当前的 SIMD 矢量处理器)。

对于 OpenCV,我希望所有这些在某种程度上都具有相关性。


推荐阅读