【发布时间】:2019-11-27 14:42:16
【问题描述】:
假设我有两个 OpenCV(python 包cv2)加载的灰度图像img1 和img2,两者尺寸相同。现在,我想取img1 和img2 的平均值。这里有两种方法:
# Method 1
mean = (img1 * 0.5) + (img2 * 0.5)
# Method 2
mean = cv2.addWeighted(img1,0.5,img2,0.5,0)
但是,当我使用cv2.imshow 显示mean 时,这两种方法在视觉上是不同的。为什么会这样?
【问题讨论】:
-
你确定 img1 和 img2 的可能范围是 0 到 1?
-
还有,cv2的完整包名是什么?如果我们不知道它是什么,就很难找到文档。
-
@topher217:
img1和img2是 8 位无符号整数,因此它们在 [0,255] 中。cv2代表 OpenCV 的 python 实现(完整的包名本身是cv2):opencv-python-tutroals.readthedocs.io/en/latest/py_tutorials/…。抱歉,我忘了提。 -
啊,我得到了错误!问题是
cv2.imshow期望图像在 [0,1] 范围内。大于 1 的像素设置为 255。 -
您能否对此进行扩展并为您自己的问题提供答案?您如何将
mean从平均范围 0 -> 255 转换为 cv2.imshow 可以接受的 0 -> 1 之一?方法 1 的值是否超过 255(裁剪),而方法 2 不是?
标签: python-3.x opencv