opencv - 非图像基本结构中的 OpenCV 浮点数与双精度数
问题描述
我理解为什么人们可能会选择在 OpenCV 的大图像中使用浮点数而不是双精度数,因为它减少了图像所需的内存。但是对于相机矩阵、旋转矩阵、平移向量和 2D/3D 点等其他 OpenCV 对象,是否有理由更喜欢 float 而不是 double?
我了解 OpenCV 倾向于抱怨您尝试使用不同类型的矩阵和向量执行数学运算(例如,执行涉及浮点图像的像素值及其在双 OpenCV 结构表示的图像中的相应位置的数学运算)是(对我来说很明显)使用浮点数的动机来自哪里?
解决方案
您可以获得比某些情况下float
更快的计算:double
1)如果您的硬件不支持double
,但支持float
(一些微控制器,一些 GPGPU)
2)如果float
计算比double
计算快(某些处理器上的 sqrt/divide)
3)如果您的计算是可向量化的,并且您的向量单元可以float
并行操作更多的元素而不是double
元素(大多数当前的 SIMD 矢量处理器)。
对于 OpenCV,我希望所有这些在某种程度上都具有相关性。
推荐阅读
- java - 为什么调用批处理文件后我的运行时命令被忽略?
- spring-boot - 无法从响应中发送 Soap 故障错误
- c++ - 将程序集从作弊引擎转换为 C++
- c# - C# XML Deserializer 中的文件意外结束
- java - 如何正确导入 Maven 阴影插件?
- javascript - Javascript RegEx 匹配除特殊字符之间的所有空格
- python - 使用字典将用西班牙语单词写的数字转换为数字字符给我一个 KeyError: 'y' ,它将如何解决?
- python - 代码在调试模式下按预期工作,但是当我在正常运行中启动它时,它失败了
- python - 我将如何通过二维数组“向上或向下移动”
- android-print-manager - 可以使用预定义的打印框架打印 pdf 吗?