Вы можете использовать PIL ImageChops следующим образом:
#!/usr/local/bin/python3
import numpy as np
from PIL import Image, ImageChops
# Open images
im1 = Image.open("im1.png")
im2 = Image.open("im2.png")
result = ImageChops.logical_xor(im1,im2)
result.save('result.png')
Итак, если вы начнете с этих двух:
![enter image description here](https://i.stack.imgur.com/mY7ed.png)
![enter image description here](https://i.stack.imgur.com/q2qt6.png)
Результат будет:
![enter image description here](https://i.stack.imgur.com/MiASL.png)
Конечно,если вы физик, вы можете написать это так; -)
#!/usr/local/bin/python3
from PIL import Image, ImageChops
ImageChops.logical_xor(Image.open("im1.png"), Image.open("im2.png")).save('result.png')
Или вы можете использовать XOR Numpy следующим образом:
#!/usr/local/bin/python3
import numpy as np
from PIL import Image
# Open images
im1 = Image.open("im1.png")
im2 = Image.open("im2.png")
# Make into Numpy arrays
im1np = np.array(im1)*255
im2np = np.array(im2)*255
# XOR with Numpy
result = np.bitwise_xor(im1np, im2np).astype(np.uint8)
# Convert back to PIL image and save
Image.fromarray(result).save('result.png')
Вы можете суммировать пикселидобавив это в конце:
print('Sum: {}'.format(np.sum(result)))
Или вы не можете написать какой-либо Python и просто наберите следующую команду ImageMagick в свой терминал:
magick im1.png im2.png -evaluate-sequence xor result.png
Если вы используете версию 6 или более раннюю, вместо этого используйте следующее:
convert im1.png im2.png -evaluate-sequence xor result.png