在numpy和opencv中添加两个图像的区别

时间:2012-03-11 06:30:15

标签: python opencv numpy

当我在opencv中添加两个图像时,sum限制为255.(两个图像都是uint8)

即opencv中175 + 100为255。

但如果我们使用numpy.add函数添加它,结果不是有限的。

即175 + 100在numpy中是19。

问题:

1)为什么会这样?

2)np.add是否有办法像cv2.add一样?即限制总和为255?

提前致谢。

1 个答案:

答案 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