为什么Opencv需要int32?

为什么Opencv需要int32?,opencv,Opencv,我在运行cv2.fillPoly(color\u warp,pts,(0255,0))时出错,然后识别出pts需要int32。 但是为什么它必须是int32?pts在图像上保存一个点数组。图像是标量矩阵。它由(X,Y)值表示,这些值可以非常充分地存储在int32中,因为OpenCV库作者决定它应该是这样的。32位整数通常对于坐标来说足够大,所以没有理由使用64位整数。不管怎么说,你希望得到什么样的答案?@alkasm我明白了。那么,在将参数放入opencv函数之前,您通常会检查它们是否为int3

我在运行
cv2.fillPoly(color\u warp,pts,(0255,0))
时出错,然后识别出
pts
需要
int32

但是为什么它必须是
int32

pts
在图像上保存一个点数组。图像是标量矩阵。它由(X,Y)值表示,这些值可以非常充分地存储在
int32

中,因为OpenCV库作者决定它应该是这样的。32位整数通常对于坐标来说足够大,所以没有理由使用64位整数。不管怎么说,你希望得到什么样的答案?@alkasm我明白了。那么,在将参数放入opencv函数之前,您通常会检查它们是否为int32吗?索引是int32值。这是从一开始就知道的。大多数函数都对任何数据类型的图像进行操作。但是,在矩阵索引中使用整数;通常,如果您从另一个OpenCV函数获取点,它们将采用正确的格式。否则,你会习惯于相当多的
pts.astype(np.int32)
.astype(np.float32)
等等。通常情况下,使用较少的位(如32位)当然更有效,而且当计算机视觉算法已经很慢并且通常需要进行实时处理时,64位的附加精度并不总是获胜。完全没有必要考虑大于2147483647(32位int max)的索引。很容易想象索引大于65535(最大16位)。所以32位整数是坐标/索引的标准。