之前不大写博客,遇到问题来网上查。今天遇到要将浮点数数组转为整形供CV2使用。在网上查了比较长时间,都是简单的浮点数转整形的例子。有些例子可能是版本问题,不能再使用了。后面查资料,终于找到opencv自带的函数,解决了这个问题。这里记录下,方便其他人。
在OpenCV中,有一个normalize函数,可以用来进行浮点数组到各种不同类型的转换。
result = cv2.normalize(src, dst=None, alpha=0, beta=255, norm_type=cv2.NORM_MINMAX, dtype=cv2.CV_8U)
其中各项参数数意义如下:
img:为输入图像或浮点数组,可以是任何通道数的单通道或多通道图像
dst: 输出图像,与输入图像大小和类型相同。如果为None,则函数会自动创建一个输出图像。
alpha: 归一化后的最小值,如果是默认值0,则函数会根据输入图像的最小像素值进行归一化。
beta: 归一化后的最大值,如果是默认值255,则函数会根据输入图像的最大像素值进行归一化。
norm_type: 转换的方式,默认值为NORM_MINMAX,表示将像素值缩放到[alpha, beta]的范围内。还可以选择cv2.NORM_INF,表示将像素值缩放到[0,1]的范围内。
dtype: 转换的目标数据类型。默认值为cv2.CV_8U,表示输出图像为8位无符号整数。也可以选择其他数据类型,如cv2.CV_32F。