先看代码:
img = cv2.imread("65.jpg")
img1 = img.copy()
img2 = img.copy()
img1 -= 112
img1 = img1.astype(np.float32)
img2 = np.float32(img2)
img2 -= 112
现象:在使用 img1 这种处理方式时,推理结果异常,起码掉点 10% 几,各种排查发现
由于 img 是 uint8, 范围为(0-255), img1 -112 时本应该出现负值,但都被 clip 至了[0, 255], 所以问题就出在数据范围上,下图为两种方式 debug 得到的不同结果。所以解决办法就是得先将数据转为 float32, 再做减法,结果正常 !!!