Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/drupal/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在numpy和opencv中添加两个图像的差异_Python_Opencv_Numpy - Fatal编程技术网

Python 在numpy和opencv中添加两个图像的差异

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就是您得到的结果 要获得此剪裁行为,您需要做

在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) 使用更高的精度:

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
第二种方法比第一种慢得多。