当我在opencv中添加两个图像时,sum限制为255.(两个图像都是uint8)
即opencv中175 + 100为255。
但如果我们使用numpy.add函数添加它,结果不是有限的。
即175 + 100在numpy中是19。
问题:
1)为什么会这样?
2)np.add是否有办法像cv2.add一样?即限制总和为255?
提前致谢。
答案 0 :(得分:3)
NumPy在溢出而不是剪切上使用“模数”算法。这是在C中添加uint8整数的行为。所以,175 + 100%256 = 19这是你得到的结果。
要获得此剪辑行为,您需要做一些工作:
以下是一些想法:
1)使用更高的精度:
im1 = im.astype('u2')
im2 = im.astype('u2')
tmp = im1 + im2
result = tmp.clip(0,255).astype('u1')
2)确保结果为> =两个输入值:
tmp = im1 + im2
mask = (tmp < im1) | (tmp < im2)
tmp[mask] = 255