Кто-нибудь может разработать этот код Python для процентной разницы между двумя изображениями? - PullRequest
0 голосов
/ 31 октября 2019

Итак, вот код, который я получил от https://rosettacode.org/wiki/Percentage_difference_between_images#C Кто-нибудь может объяснить, как это работает?

PS: я знаю основы PIL (например, open, save, filter, thumbnail и т.д .. .)

from PIL import Image


# python code for percentage difference between two images
def diff(image1, image2):
    i1 = Image.open(image1)
    i2 = Image.open(image2)
    assert i1.mode == i2.mode, "Different kinds of images."
    assert i1.size == i2.size, "Different sizes."
    pairs = zip(i1.getdata(), i2.getdata())
    if len(i1.getbands()) == 1:
        dif = sum(abs(p1 - p2) for p1, p2 in pairs)
    else:
        dif = sum(abs(c1 - c2) for p1, p2 in pairs for c1, c2 in zip(p1, p2))
    ncomponents = i1.size[0] * i1.size[1] * 3
    print(f'DIFF {image1} and {image2} ==> {(dif / 255.0 * 100) / ncomponents}')
    return (dif / 255.0 * 100) / ncomponents
...