Python 在numpy和opencv中添加两个图像的差异
在opencv中添加两个图像时,总和限制为255。(两幅图像均为uint8) ie 175+100在opencv中为255 但若我们使用numpy.add函数添加它,结果并不是有限的 ie 175+100在numpy中为19 问题: 1) 为什么会这样 2) 有没有一种方法让np.add表现得像cv2.add?把总数限制在255 提前感谢。NumPy对溢出使用“模”运算,而不是剪裁。这是C中的附加uint8整数的行为。因此,175+100%256=19就是您得到的结果 要获得此剪裁行为,您需要做一些工作: 以下是一些想法: 1) 使用更高的精度:Python 在numpy和opencv中添加两个图像的差异,python,opencv,numpy,Python,Opencv,Numpy,在opencv中添加两个图像时,总和限制为255。(两幅图像均为uint8) ie 175+100在opencv中为255 但若我们使用numpy.add函数添加它,结果并不是有限的 ie 175+100在numpy中为19 问题: 1) 为什么会这样 2) 有没有一种方法让np.add表现得像cv2.add?把总数限制在255 提前感谢。NumPy对溢出使用“模”运算,而不是剪裁。这是C中的附加uint8整数的行为。因此,175+100%256=19就是您得到的结果 要获得此剪裁行为,您需要做
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
tmp=im1+im2
掩码=(tmp
第二种方法比第一种慢得多。