gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 23:45:14 25 4
gpt4 key购买 nike

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

即175+100在opencv中是255。

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

即 175+100 在 numpy 中是 19。

问题:

1)为什么会这样?

2) 有没有办法让 np.add 表现得像 cv2.add ?即限制总和为 255?

提前致谢。

最佳答案

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

关于python - numpy和opencv中添加两个图像的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9652960/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com