我正在使用Python中的OpenCV进行视觉算法。它的一个组成部分需要比较颜色空间中的点,其中x和y分量不是整数。我们的点列表存储为ndarray,dtype = float64,我们的数字范围从-10到10给出或接受。
我们算法的一部分涉及在此空间的某些点上运行凸包,但cv2.convexHull()
需要一个dtype = int的ndarray。
鉴于我们正在比较的值的范围很窄,简单截断会导致我们丢失~60位信息。有没有办法让numpy直接将float数组解释为int数组?由于规模没有意义,我希望考虑所有64位。
是否有任何定义的方法在numpy浮点数中将指数与尾数分开,而不对每个元素进行逐位提取?
答案 0 :(得分:1)
"我们算法的一部分涉及在此空间的某些点上运行凸包,但cv2.convexHull()需要一个带dtype = int的ndarray。"
cv2.convexHull()也接受带有float32号的numpy数组。
尝试使用cv2.convexHull(numpy.array(a,dtype = 'float32'))
,其中a是维度n * 2的列表(n =点数)。