似乎在 OpenCV 中,int
数据类型总是假定为 32 位。这反射(reflect)在文档中(例如,in the introduction),也反射(reflect)在源代码中(例如,在 modules/core/include/opencv2/core/cvdef.h
的注释中,以及它将 uint
定义为 32 位无符号整数,但没有定义相应的有符号类型这一事实。
在 int
不是 32 位的系统上,这如何不破坏 OpenCV?毕竟,标准只保证 int
是 16 位。
我希望 OpenCV 为其使用的所有大小定义数据类型(就像它为 int64
所做的那样),或者使用 uint_8
和 friend 。
最佳答案
How does this not break OpenCV on systems in which int isn't 32 bits?
可能是的。您应该尝试在这样的系统上构建以确保。再一次,我祝你好运,找到这样一个系统,它仍然有足够的内存和 CPU 能力来做有意义的计算机视觉; 16 位 int
这些天通常在非常小的嵌入式系统中找到。
获得至少 32 位宽的快速类型的简洁方法是使用 int_fast32_t
从 <stdint.h>
输入,但这需要 C99 支持,而 Microsoft 的 C 编译器长期以来一直不支持该标准。
关于c++ - `int` 假定在 OpenCV 中始终为 32 位?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19592598/