Во-первых, вам нужно определить, что вы подразумеваете под «разницей между двумя изображениями». Важно отметить, что cv2.subtract
выполняет насыщение, что означает, что если ваши изображения находятся, например, в. np.uint8
, все отрицательные значения будут обрезаны до 0 (подробности см. В этого ответа ). Может быть, это не то, что вы хотите. Но давайте скажем, что - это , что вы хотите. Затем вы можете сделать то, что @ Tilman сказал в комментариях (вам также нужно вычесть мин, см. Ниже). Если вы не понимаете, почему, более подробную информацию можно увидеть в этом ответе . По сути, ваш код будет выглядеть следующим образом (я сделал это шаг за шагом, чтобы вы могли понять):
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]