非图像基本结构中的OpenCV float vs double

非图像基本结构中的OpenCV float vs double,opencv,floating-point,Opencv,Floating Point,我理解为什么在OpenCV中可以选择在一个大图像中使用双精度浮点,因为这样可以减少图像所需的内存。但是,对于其他OpenCV对象(如摄影机矩阵、旋转矩阵、平移向量和2D/3D点),是否有理由选择浮动而不是双精度 我知道OpenCV倾向于抱怨您尝试使用不同类型的矩阵和向量进行数学运算(例如,执行涉及浮点图像的像素值及其在用双OpenCV结构表示的图像中的对应位置的数学运算),这是(对我来说很明显)的地方吗使用浮点运算的动机来自于?在某些情况下,使用float比double的计算速度要快得多: 1)

我理解为什么在OpenCV中可以选择在一个大图像中使用双精度浮点,因为这样可以减少图像所需的内存。但是,对于其他OpenCV对象(如摄影机矩阵、旋转矩阵、平移向量和2D/3D点),是否有理由选择浮动而不是双精度

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

在某些情况下,使用
float
double
的计算速度要快得多:

1) 如果您的硬件不支持双精度,但支持浮点(一些微控制器,一些GPGPU)

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

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

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