我想得到两个图像之间的差异,并对结果数组进行归一化并缩放以适合[0,255]。
我正在尝试以下操作:
import cv2
img1 = cv2.imread("lko.png")
img2 = cv2.imread("jum.png")
cv2.subtract(img1, img2)
但是我不确定这是否是正确的方法吗?我如何规范化结果数组并缩放以适合[0,255?]
答案 0 :(得分:0)
首先,您需要定义“ 2张图像之间的差异”的含义。重要的是要注意cv2.subtract
执行饱和,这意味着,如果您的图像位于例如np.uint8
,所有负值都将被裁剪为0(请参见this answer中的更多详细信息)。也许那不是您想要的。但是让我们说 是您想要的。然后,您可以按照评论中的@Tilman进行操作(您也需要减去分钟数,请参见下文)。如果您不明白为什么,可以在this answer中查看更多详细信息。基本上,您的代码将是这样的(为了帮助您理解,我逐步进行了此操作):
import cv2
img1 = cv2.imread("lko.png")
img2 = cv2.imread("jum.png")
diff = cv2.subtract(img1, img2) # range [a, b]
diff = diff - np.min(diff) # range [0, b-a]
diff /= np.max(diff) # range [0, 1]
diff *= 255 # range [0, 255]