为什么应用 cv2.normalize 后的最小值不完全为零?

Why is the minimal value after applying cv2.normalize not exactly zero?

提问人:Rosy 提问时间:4/13/2023 最后编辑:Rosy 更新时间:4/14/2023 访问量:85

问:

我有一个带有浮点的二维数组。我想在 python 中将其归一化为 0-255 之间。我像这样应用了opencv规范化:

result = cv2.normalize(my_array, None, alpha=0, beta=255, norm_type=cv2.NORM_MINMAX, dtype=cv2.CV_32F)

但是 result.min() 是 -5.9604645e-07。我知道我的数据类型是浮点数,-5.9604645e-07 是一个非常小的值,但为什么结果不是最小值 0 或 0.0?

我的opencv版本是4.7.0。

opencv 数学 精度 数值 归一化

评论

1赞 Dan Mašek 4/13/2023
请提供重现此行为的示例输入,并说明发生此行为的 OpenCV 版本。
0赞 Toyo 4/14/2023
一定是 epsilon floating_point的问题。尝试使用 numpy.isclose 函数,它会使您的最小值变为 0。根据您的数据,cv.normalize 将采取不同的行动。

答: 暂无答案